python3.6获取字典的key_Python3基础语法(六)--数据结构 dict字典

Dict 字典是无序(3.6版本后有序),可修改,它能存储任何数据,数据结构和json类似。

一、字典定义

字典的每个值都具备自己独有的名称即键( key ),每个 key 都有对应的值( value ),字典中的 key 和 value 必须成对出现 。整个字典包括在花括号‘{ }’中,它的每个键值 ( key => value )对使用冒号( : )分割,每对值之间用逗号( , )分割。

定义如记录人员成绩的字典,如下:

d = {'Woodman': 95, 'Alan': 85, 'Bobo': 59}

我们把姓名 Woodman、Alan、Bobo 称为key,对应的成绩 95、85、59 称为value,dict 字典可以通过 key 来查找值,一个 key:value 算作一个值。注意:dict字典用的键( key )必须是唯一的,但值则不必。一个字典中不能出现相同名称的键( key ),但值能相同,值可以是任何数据类型(字符串、数字、元组、列表、字典等)。

# 混合字典 key不重复,值可以是任意类型

d = {'woodman': 98, 2.5: 'PM', 'Bobo': [89, 65, 34],'Mydict': {'Alan': 99}}拓展:dict 的最大特点是查找速度快,无论 dict 有10个元素还是10万个元素,查找速度都一样。

二、访问字典

1、获取 dict 字典的值

我们可以使用 dict [ key ] 来获取所需要的值。

d = {'woodman': 98, 9.86: 'GM', 'Bobo': [89, 65, 34], 'Mydict': {'Alan': 99}}

print(d['woodman'])

print(d[9.86])

print(d['AA']) # 会抛出KeyError异常,表示无此键(key)

通过 key 访问 dict 的 value,只要 key 存在,dict就返回对应的 value。如果key不存在,会直抛出 KeyError 异常。

怎么避免KeyError错误?

有两种方法:

第一种使用 key in dict 选判读字典中是否存在此key;

另一种是 dict 自带的 ge t方法 dict.get(key) ,在 key 不存在的时候,返回 None

d = {'woodman': 98, 9.86: 'GM', 'Bobo': [89, 65, 34], 'Mydict': {'Alan': 99}}

if 'woodman' in d: # d字典中有woodman

print(d['woodman'])

if 'Aric' in d: # 判断字典中是否有Aric键

print(d['Aric'])

print(d.get('Bobo')) # d字典中有Bobo,返回BoBo对应的值

print(d.get('my')) # d字典中无my,返回None注意:dict 字典根据 key 存储值,他是无序的所以我们不能通过索引号访问数据( Python3.6 后字典为有序)

2、获取 dict 字典的所有的键 keys 和所有的值 values(获取的是key和values的迭代器)

dict.keys() # 获取所有键 key 的迭代器

dict.values() # 获取字典所有的值 value 的迭代器

d = {'woodman': 98, 9.86: 'GM', 'Bobo': [89, 65, 34], 'Mydict': {'Alan': 99}}

print(d.keys()) # 获取字典所有的键的迭代器

print(d.values()) # 获取字典所有的值的迭代器

输出:

dict_keys(['woodman', 'Bobo', 'Mydict', 9.86])

dict_values([98, [89, 65, 34], {'Alan': 99}, 'GM'])

三、新增与修改字典值

dict[key] = value 新增或修改字典值,当 key 不存在字典中时新增值,存在是则修改它的值

dict.update( otherdict ) 批量更新或增加值,根据o therdict 字典更新 dice 字典,otherdict 中有 dice 没有的值就新增,dice 中有的值就修改为 otherdict 中的值

d = {'woodman': 98, 9.86: 'GM', 'Bobo': [89, 65, 34], 'Mydict': {'Alan': 99}}

d['Bobo'] = 98 # 更新Bobo的值

print(d)

d['Aric'] = 66 # 字典中无Aric的值,添加Aric

print(d)

d1 = {'Aric': "I'm Ariv", 'woodman': "I'm woodman"}

d.update(d1) # 根据d1字典更新d字典,没有的值新增,有的值修改

print(d)注意:我们 key 一旦定义我们不能修改 key

四、删除字典元素

dict.pop(key) 删除对应键值

dict.clear() 清空 dict

del dict[ key ] 删除对应键值

del dict 删除 dict,dict 无法访问

示例:

d = {'woodman': 98, 9.86: 'GM', 'Bobo': [89, 65, 34], 'Mydict': {'Alan': 99}}

d.pop(9.86) # 删除9.86 对应的值

print(d) # 删除无9.86

del d['woodman'] # 删除单个值

print(d) # 删除无woodman

d.clear() # 清空dict的键值,不会删除引用d

print(d) # d能访问

del d # 删除字典d所有的值

print(d) # 字典d无法访问,NameError异常

五、字典遍历

1、通过 key 遍历

d = {'woodman': 98, 9.86: 'GM', 'Bobo': [89, 65, 34], 'Mydict': {'Alan': 99}}

for key in d:

print(d[key])

输出:GM

98

[89, 65, 34]

{'Alan': 99}

2、通过 dict.items 遍历

d = {'woodman': 98, 9.86: 'GM', 'Bobo': [89, 65, 34], 'Mydict': {'Alan': 99}}

for key, value in d.items():

print(key, ':', value)

输出:9.86 : GM

Bobo : [89, 65, 34]

Mydict : {'Alan': 99}

woodman : 98

六、字典常用函数

len( dict ) 计算字典元素个数,即键的总数

d = {'woodman': 98, 9.86: 'GM', 'Bobo': [89, 65, 34], 'Mydict': {'Alan': 99}}

print(len(d)) # 打印字典键的个数,4个

七、字典常用方法(看看就可以)dict.clear()删除字典内所有元素

dict.copy()返回一个字典的浅复制

dict.fromkeys()创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值

dict.get(key, default=None)返回指定键的值,如果值不在字典中返回default值

dict.items()以列表返回可遍历的(键, 值) 元组数组

dict.keys()以列表返回一个字典所有的键

dict.setdefault(key, default=None)和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default

dict.update(dict2)把字典dict2的键/值对更新到dict里

dict.values()以列表返回字典中的所有值

pop(key[,default])删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。

popitem()随机返回并删除字典中的一对键和值。

八、总结

记住以下几点:

1、字典的键值对是无序的( Python3.6 开始有序),值可修改,定义字典时键值( key=>value )必须成对出现;

2、字典的键(key)不可以重复,键重复时值以最后一个为准;

3、字典的键必须不可变,所以可以用数字,字符串或元组充当,而不能用列表等;

4、不管字典的数据量有多大,他们的访问速度都是一样的。

你可能感兴趣的:(python3.6获取字典的key_Python3基础语法(六)--数据结构 dict字典)