最近在用Python做接口自动化测试,Python基础都是自学的,内容是挺简单的,实践起来真的没那么容易,今天对字典的使用做了一些总结,该文章分成三个部分,第一部分是关于字典遍历,第二部分是管理字典key,value的获取,第三部分是自我实践的内容。前两个部分是转载来网络,还是很适用的,可以满足对dict的大部分的使用。Python菜鸟第一集,哈哈~
dict字段遍历
本文实例讲述了Python3字典遍历操作。分享给大家供大家参考,具体如下:
字典是针对非序列集合而提供的一种数据类型。
通过任意键查找集合中值信息的过程叫映射,python通过字典实现映射。
为字典赋值:
>>> d={'list':[1, 2, 3],1:123,'111':'python3','tuple':(4, 5, 6)}
>>> print(d)
{1: 123, 'list': [1, 2, 3], '111': 'python3', 'tuple': (4, 5, 6)}
以上语句说明,字典中各项的顺序与赋值时的顺序可能不一致,即字典是无序的。
字典的遍历有一下几种:
1.遍历字典的键key
①
>>> d={'list':[1, 2, 3],1:123,'111':'python3','tuple':(4, 5, 6)}
>>> for key in d:
print(str(key)+':'+str(d[key]))
list:[1, 2, 3]
1:123
111:python3
tuple:(4, 5, 6)
②
>>> d={'list':[1, 2, 3],1:123,'111':'python3','tuple':(4, 5, 6)}
>>> for key in d.keys():
print(key)
1
list
111
tuple
2.遍历字典的值value
>>> d={'list':[1, 2, 3],1:123,'111':'python3','tuple':(4, 5, 6)}
>>> for value in d.values():
print (value)
[1, 2, 3]
123
python3
(4, 5, 6)
3.遍历字典的项
>>> d={'list':[1, 2, 3],1:123,'111':'python3','tuple':(4, 5, 6)}
>>> for item in d.items():
print(item)
('list', [1, 2, 3])
(1, 123)
('111', 'python3')
('tuple', (4, 5, 6))
4.遍历字典的key-value
①
>>> d={'list':[1, 2, 3],1:123,'111':'python3','tuple':(4, 5, 6)}
>>> for key,value in d.items():
print(key,value)
list [1, 2, 3]
1 123
111 python3
tuple (4, 5, 6)
②
>>> d={'list':[1, 2, 3],1:123,'111':'python3','tuple':(4, 5, 6)}
>>> for (key,value) in d.items():
print(key,value)
list [1, 2, 3]
1 123
111 python3
tuple (4, 5, 6)
上述示例运行效果如下图所示:
python 字典操作提取key,value
python字典操作提取key,value dictionaryName[key] = value
1.为字典增加一项
2.访问字典中的值
3、删除字典中的一项
4、遍历字典
5、字典遍历的key\value
6、字典的标准操作符
7、判断一个键是否在字典中
8、python中其他的一些字典方法
9、将两个字典合并
a={'a':1,'b':2,'c':3}
b= {'aa':11,'bb':22,'cc':33}
#方法一print(dict(a,**b))
#方法二 这其实就是在内存中创建两个列表,再创建第三个列表,拷贝完成后,创建新的dict,删除掉前三个列表。这个方法耗费性能,而且对于python3,这个无法成功执行,因为items()返回是个对象。print(dict(list(a.items())+list(b.items())))
#方法三
c={}
c.update(a)
c.update(b)print(c)
#方法四 python 3.5支持,可以存在重复键值,比如说:a={'a':1,'b':2,'c':3,'aa':12}会报错TypeError: print() got multiple values for keyword argument 'aa'print(**a,**b)
他们的输出结果都是:
{'bb': 22, 'cc': 33, 'aa': 11, 'a': 1, 'b': 2, 'c': 3}
注意如果存在相同键值,比如说:a={'a':1,'b':2,'c':3,'aa':12} b= {'aa':11,'bb':22,'cc':33} 那么方法一\二\三得到结果为
{'cc': 33, 'a': 1, 'bb': 22, 'c': 3, 'b': 2, 'aa': 11}
而方法四则会报错:
TypeError: print() got multiple values for keyword argument‘aa’ 10、key和value互换 方法一:
#!/usr/bin/env python3# -*- coding: utf-8 -*-dict_ori = {'A':1, 'B':2, 'C':3}
dict_new = {value:key for key,value in dict_ori.items()}
print(dict_new)
{1:‘A’, 2: ‘B’, 3: ‘C’}
方法二:使用zip方法
#!/usr/bin/env python3# -*- coding: utf-8 -*-
dict_ori = {'A':1, 'B':2, 'C':3}
dict_new2= dict(zip(dict_ori.values(), dict_ori.keys()))
print(dict_new2)
{1:‘A’, 2: ‘B’, 3: ‘C’}
10、字典多键值及重复键值的使用方法(详解) 方案一
#encoding=utf-8print ('中国')#字典的一键多值print('方案一 list作为dict的值 值允许重复' )
d1={}
key=1value=2d1.setdefault(key,[]).append(value)
value=2d1.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,[]) )
方案一输出结果
中国
方案一list作为dict的值 值允许重复{1: [2, 2]}方案一 获取值[2, 2]方案一 删除值,会留下一个空列表{1: []}方案一 检查是否还有一个值[]
方案二
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,()) )
方案二输出结果
方案二使用子字典作为dict的值 值不允许重复{1: {2: 22, 3: 33}}
方案二获取值[```2, 3]方案二 删除值,会留下一个空列表{1: {}}
方案二检查是否还有一个值{}
方案三
print ('方案三 使用set作为dict的值 值不允许重复')
d1={}
key=1value=2d1.setdefault(key,set()).add(value)value=2d1.setdefault(key,set()).add(value)value=3d1.setdefault(key,set()).add(value)
print ('方案三 获取值' )
print (list(d1[key]) )
print ('方案三 删除值,会留下一个空列表')
d1[key].remove(value)value=2d1[key].remove(value)
print (d1 )
print ('方案三 检查是否还有一个值' )
print (d1.get(key,()) )
输出结果:
方案三使用set作为dict的值 值不允许重复
{1: {2, 3}}
方案三获取值
[2, 3]
方案三删除值,会留下一个空列表
{1: set()}
方案三检查是否还有一个值set()
接口测试错误码实践
查询接口错误码,提示信息太多,为了更方便的处理错误信息,使用字典遍历获取key,value,真心觉得写代码不容易。