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


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351

推荐阅读更多精彩内容