Python基础——关于字典dict(详解)

294 篇文章 5 订阅
1 篇文章 0 订阅

Python基础——关于字典dict

最近在用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,真心觉得写代码不容易。

 

如果大家对于学习Python有任何问题,学习方法,学习路线,如何学习有效率的问题,可以随时来咨询我,或者缺少系统学习资料的,我做这行年头比较久,自认为还是比较有经验的,可以帮助大家提出建设性建议,这是我的Python交流qun:785128166,有任何问题可以随时来咨询我。
 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值