-
键值对
2018-01-28 16:30:36一、键值对问题: 键值对(”key = value”)字符串,在开发中经常使用; 每个键后面对应着相应的值, 当按下相应的键时, 就会输出相应的结果,那么如何用程序实现呢? 二、举个例子: 1.要求: 要求1:请...###一、键值对问题:
键值对(”key = value”)字符串,在开发中经常使用;
每个键后面对应着相应的值, 当按下相应的键时, 就会输出相应的结果,那么如何用程序实现呢?###二、举个例子:
1.要求:
要求1:请自己定义一个接口,实现根据key获取valude;
要求2:编写测试用例。
要求3:键值对中间可能有n多空格,请去除空格2.注意:
键值对字符串格式可能如下:
“key1 =valude1”
“key2 = valude2 ”
“key3 = valude3”3.测试用例:
<1>“ORACLE_name=itcast” “ORACLE_name” itcast
<2>“oracle_pwd=123456” “oracle_pwd” 123456
<3>“oracle_pwd= 231256” “oracle_pwd” 231256
<4>orace_pwd= 231256,报告出错###三、算法思想:
(1)、编写一个函数,利用函数实现功能,给出接口,主调函数调用;
(2)、函数思想:
1、在字符串中查找是否含有关键字
2、再查找是否含有“=”
3、去掉值中的首尾空格###四、程序实现:
#include<stdio.h> #include<stdlib.h> #include<string.h> //一般情况下不要修改输入的内存块的值 int trimSpace_ok2(char *mybuf, char *outbuf)//去掉首尾空格函数 { int count = 0; int i = 0, j = 0; char *p = mybuf; j = strlen(p) -1; while (p[i]==' ' && p[i] != '\0') { i++; } while (p[j]==' '&& j>0) { j--; } count = j-i +1; memcpy(outbuf, mybuf+i, count); outbuf[count] = '\0'; return 0; } int getKeyByValude(char *keyvaluebuf, char *keybuf, char *valuebuf, int * valuebuflen) { char tmp[2048*10];//开辟足够的内存空间,用于存放 int ret=0; char *p=keyvaluebuf; if(keyvaluebuf==NULL||keybuf==NULL||valuebuf==NULL||valuebuflen==NULL) { ret=-1; return ret; } //第一步:在字符串中查找是否含有关键字 p=strstr(keyvaluebuf,keybuf); if(p==NULL) { return -1; } p=p+strlen(keybuf); //第二步:查找是否含有= p=strstr(keyvaluebuf,"="); if(p==NULL) { return -1; } p=p+1; 第三步:去掉首尾的空格字符串; ret = trimSpace_ok2(p, tmp);//调用函数实现 if (ret!= 0) { printf("func trimSpace_ok2() err:%d\n", ret); return ret; } strcpy(valuebuf, tmp); *valuebuflen = strlen(tmp); return 0; } void main() { int ret=0; //char value1[]="ORACLE_name="itcast";/*测试1 */ /*char value1[]="oracle_pwd=123456 ";*//*测试2 */ char value1[]="oracle_pwd= 231256";/*测试3*/ char value1[]="orace_pwd= 231256";/*测试4*/ //char key1[]="ORACLE_name";/*测试1的关键字 */ //char key1[]="oracle_pwd";/*测试2 的关键字*/ char key1[]="oracle_pwd";/*测试3的关键字*/ char buf[100]={0};//必须初始化 int len=0; ret =getKeyByValude(value1,key1, buf, &len); if(ret!=0) { printf("func getKeyByValude() err ,ret=%d\n",ret); } printf("buf=%s\n",buf); printf("len =%d\n",len); getKeyByValude(value1,key1, buf, &len); system("pause"); }
###五、测试结果:
<1>“ORACLE_name=itcast” “ORACLE_name” itcast<2>“oracle_pwd=123456” “oracle_pwd” 123456
<3>“oracle_pwd= 231256” “oracle_pwd” 231256
<4>orace_pwd= 231256, 报告出错
-
键值
2015-01-04 08:47:54常数 值 描述 vbKeyLButton 1 鼠标左键 vbKeyRButton 2 鼠标右键 vbKeyCancel 3 CANCEL键 vbKeyMButton 4 鼠标中键 vbKeyBack -
python字典多键值及重复键值的使用方法(详解)
2017-04-25 17:30:25在Python中使用字典,格式如下: ...字典的多键值形式如下: 1 dict={(ke11,key12):value ,(key21,key22):value ...} 在实际访问字典里的值时的具体形式如下所示(以第一个键为例):本文 Github/javamap 已收录,有Java程序员进阶技术知识地图以及我的系列文章,欢迎大家Star。
在Python中使用字典,格式如下:
1
dict
=
{ key1:value1 , key2;value2 ...}
在实际访问字典值时的使用格式如下:
1
dict
[key]
多键值
字典的多键值形式如下:
1
dict
=
{(ke11,key12):value ,(key21,key22):value ...}
在实际访问字典里的值时的具体形式如下所示(以第一个键为例):
1
dict
[key11,key12]
或者是:
1
dict
[(key11,key12)]
以下是实际例子:
多值
在一个键值对应多个值时,格式:
1
dict
=
{key1:(value1,value2 ..), key2:(value1,value2 ...) ...}
访问字典里的值的格式如下:
1
dict
[key]
或者
1
dict
[key][index]
循环赋值(重点)
语法结构如以下实例所示
总结:
通过以上的说明,可以知道在字典的定义中, 冒号( : ) 号前后是分别是一个整体,即使用小括号()将冒号前后部分分别包括起来,在访问字典值时,最好把键放在小括号内成为一个整体。
键值相同的多个键值对
即在字典中,有至少两个成员的键相同,但是键对应的值是不同的,格式如下:
1
2
3
dict
=
{ key1: value1
key1: vaklue2,
... }
在这种形式形式中在后来赋给键的值将成为键的真实值。
使用列表、字典作为字典的值
格式
1
2
3
dict
=
{ key1:(key11:value,key12:value) ,
key2:(key21:value,key22:value)
}
访问字典值得格式(以第一个键为例):
1
dict
[key1][key11]
实际例子如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#encoding=utf-8
print
'中国'
#字典的一键多值
print
'方案一 list作为dict的值 值允许重复'
d1
=
{}
key
=
1
value
=
2
d1.setdefault(key,[]).append(value)
value
=
2
d1.setdefault(key,[]).append(value)
print
d1
#获取值
print
'方案一 获取值'
print
list
(d1[key])
print
'方案一 删除值,会留下一个空列表'
d1[key].remove(value)
d1[key].remove(value)
print
d1
print
'方案一 检查是否还有一个值'
print
d1.get(key,[])
print
'方案二 使用子字典作为dict的值 值不允许重复'
d1
=
{}
key
=
1
keyin
=
2
value
=
11
d1.setdefault(key,{})[keyin]
=
value
keyin
=
2
value
=
22
d1.setdefault(key,{})[keyin]
=
value
keyin
=
3
value
=
33
d1.setdefault(key,{})[keyin]
=
value
print
d1
print
'方案二 获取值'
print
list
(d1[key])
print
'方案二 删除值,会留下一个空列表'
del
d1[key][keyin]
keyin
=
2
del
d1[key][keyin]
print
d1
print
'方案二 检查是否还有一个值'
print
d1.get(key,())
print
'方案三 使用set作为dict的值 值不允许重复'
d1
=
{}
key
=
1
value
=
2
d1.setdefault(key,
set
()).add(value)
value
=
2
d1.setdefault(key,
set
()).add(value)
value
=
3
d1.setdefault(key,
set
()).add(value)
print
d1
print
'方案三 获取值'
print
list
(d1[key])
print
'方案三 删除值,会留下一个空列表'
d1[key].remove(value)
value
=
2
d1[key].remove(value)
print
d1
print
'方案三 检查是否还有一个值'
print
d1.get(key,())
打印结果:
中国
方案一 list作为dict的值 值允许重复
{1: [2, 2]}获取值
[2, 2]
删除值,会留下一个空列表
{1: []}
检查是否还有一个值
[]
方案二 使用子字典作为dict的值 值不允许重复
{1: {2: 22, 3: 33}}
获取值
[2, 3]
删除值,会留下一个空列表
{1: {}}
检查是否还有一个值
{}
方案三 使用set作为dict的值 值不允许重复
{1: set([2, 3])}
获取值
[2, 3]
删除值,会留下一个空列表
{1: set([])}
检查是否还有一个值
set([])-- END --
日常求赞:你好技术人,先赞后看养成习惯,你的赞是我前进道路上的动力,对我非常重要。
加油技术人!
简介: 博主从华中科技大学硕士毕业,是一个对技术有追求,对生活有激情的程序员。几年间浪迹于多个一线互联网大厂,具有多年开发实战经验。
微信搜索公众号【爱笑的架构师】,我有技术和故事,等你来。
文章持续更新,在 Github/javamap 中可以看到我归档的系列文章,有面试经验和技术干货,欢迎Star。
-
zabbix键值
2019-02-24 19:24:19此文档里面写了zabbix的所有键值,及描述和使用方法,通过此文档可以轻松查阅了解并使用zabbix键值,是一个得利的小工具书! -
MFC 屏蔽按键 读取键值 删除键值 设置键值 注册表编辑
2013-04-23 11:58:11和免费的功能基本一样,增加了判断键值代码,思路如下: 功能描述:管理员读取键值A(屏蔽5个按键Del、左右Alt、左右Win键)存在的话,删除键值A,建立一个键值B;如果键值B存在的话则删除键值B,建立键值A; 其它账户的... -
键值数据库-源码
2021-02-15 06:04:47键值数据库 -
Qt中QMap键值对基本用法(键值对)
2019-08-07 15:46:45本文主要总结Qt中键值对QMap的基本用法。 1.1原型讲解 QMap是一个键值对类,跟标准C++的map类基本类似,声明原型如下: QMap<T1,T2> map1 T1为键值对中的键key,T2为键值对中的值。通过键值对中的键可以...本文主要总结Qt中键值对QMap的基本用法。
1.1原型讲解
QMap是一个键值对类,跟标准C++的map类基本类似,声明原型如下:
QMap<T1,T2> map1
T1为键值对中的键key,T2为键值对中的值。通过键值对中的键可以搜索到值。一般来说,键值对中的键是唯一的,不可重复,而值没有要求,可以重复。并且QMap具有自动排序功能,对输入的键进行排序。
1.2下面是一个具体应用实例
void Widget::on_pushButton_2_clicked() { QMap<DWORD64,QString> map1; map1.insert(11,"name11"); map1.insert(2,"name2"); map1.insert(33,"name33"); map1.insert(4,"name4"); QMap<DWORD64,QString>::Iterator it=map1.begin(); while(it!=map1.end()) { qDebug()<<it.key()<<"\t"<<it.value(); it++; } qDebug()<<"map1[2]=="<<map1[2]; if(map1.contains(4)) qDebug()<<map1.find(4).key(); }
参考内容:
-
浅谈python字典多键值及重复键值的使用
2020-09-21 12:34:06下面小编就为大家带来一篇浅谈python字典多键值及重复键值的使用。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 -
qt删除键值_Qt QMap键值对基本用法(键值对)
2020-12-30 02:22:36本文主要总结Qt中键值对QMap的基本用法。1.1原型讲解QMap是一个键值对类,跟标准C++的map类基本类似,声明原型如下:QMap map1T1为键值对中的键key,T2为键值对中的值。通过键值对中的键可以搜索到值。一般来说,... -
键值键盘获得
2017-04-26 16:30:01获取键盘键值 -
安卓键值测试jar
2018-04-05 16:35:41测试按键键值 测试按键键值 测试按键键值 测试按键键值 测试按键键值 测试按键键值 测试按键键值 测试按键键值 测试按键键值 测试按键键值 测试按键键值 -
android测试键值 apk
2020-09-13 18:00:29一个测试键值的apk,将apk安装到系统,操作键盘或者遥控器,会把相应键值打印出来 一个测试键值的apk,将apk安装到系统,操作键盘或者遥控器,会把相应键值打印出来 -
键值更换器键值更换器
2009-12-03 13:42:41键值更换器键值更换器键值更换器键值更换器键值更换器键值更换器键值更换器键值更换器键值更换器 -
键值映射
2019-09-04 12:14:35如果键已经存在,那么原来的键值对将被替代成新的键值对。 对于方法 sum,你将得到一个表示前缀的字符串,你需要返回所有以该前缀开头的键的值的总和。 示例 1: 输入: insert("apple", 3), 输出: Null 输入: s... -
易语言键值查询器源码
2020-07-15 02:39:27易语言键值查询器源码,键值查询器 -
VB操作注册表的实例:存取键值、删除键值.rar
2019-07-09 16:38:28注册表操作VB实例:存取键值、删除键值,功能比较简单,并且有一定的局限性,有兴趣的朋友可以下载源码后继续开发,多学习才能进步哦。 -
python 字典键值重复_python字典多键值及重复键值的使用
2021-03-17 03:17:22value2 ...}在实际访问字典值时的使用格式如下:dict[key] 多键值字典的多键值形式如下:dict={(ke11,key12):value ,(key21,key22):value ...}在实际访问字典里的值时的具体形式如下所示(以第一个键为例):dict... -
python 嵌入键值数据库_键值对数据库综述
2020-12-15 10:39:00键值对数据库综述与典型KV数据库介绍一、键值数据库概述键值数据库是一种非关系数据库,它使用简单的键值方法来存储数据。键值数据库将数据存储为键值对集合,其中键作为唯一标识符。键和值都可以是从简单对象到复杂... -
eclipse键值对
2015-10-12 17:12:29eclipse键值对,对键值一个整理,整理的不全,后续继续追踪 -
易语言测试虚拟键值源码
2020-07-15 23:53:15易语言测试虚拟键值源码,测试虚拟键值,测试虚拟键_ -
键盘的键值
2015-12-07 19:05:03描述了键盘的各种键值的数值大小,用于JS Css html 都会用到关于权限的设置时,使用侦听键值来对事件做出反应 -
delphi键值对应码表
2018-01-22 14:52:40delphi 键值对应码表,判断从键盘敲到啥键获取对应的键值 -
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
2020-10-19 23:03:40主要介绍了php数组实现根据某个键值将相同键值合并生成新二维数组的方法,涉及php数组的遍历、赋值相关运算技巧,需要的朋友可以参考下 -
屏蔽键值
2007-09-11 09:36:21屏蔽键值 -
java map 修改键值对_MAP键值对
2021-02-27 19:22:31转自网易博客 炎火所谓键值对,你可以查看jdk文档,找MAP接口,它的实现类都是键值对的形式保存数据的,键值对的代表map的key可以是什么类型的数据value可以是什么类型的数据。键:就是你存的值的编号key必须是一个...