what
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值对( key value 对) 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:
dictname = {key1 : value1, key2 : value2, key3 : value3 }
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字。
建
{ },花括号括起键值对
dict1={}#空字典
dict2 = { 'abc': 123, 98.6: 37 }
dict( ),函数
dict1=dict()
dict2=dict([('Zhang',99), ('王五',87),('Li Si',87)])
print(dict2)#{'Zhang': 99, '王五': 87, 'Li Si': 87}
#dict(以成对元组为元素的列表,且第一个元素可作为字典的键)
#从两个序列生成字典
keys=['a', 'b', 'c']
values=[1, 2, 3]
D1={}
for k, v in zip(keys,values):
D1[k]=v
print(D1)#{'a': 1, 'b': 2, 'c': 3}
D2=dict(zip(keys,values))
print(D2)#{'a': 1, 'b': 2, 'c': 3}
dict.fromkeys(seq, val=None)函数,创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
D1 = dict.fromkeys(['a','b','c'], 0)
print(D1)
D2 = dict.fromkeys('abc')
print(D2)
D3 = dict.fromkeys('abc', 0)
print(D3)
###
{'a': 0, 'b': 0, 'c': 0}
{'a': None, 'b': None, 'c': None}
{'a': 0, 'b': 0, 'c': 0}
字典解析式(dict comprehension)
d1={i:i**2 for i in range(1,10)}
print(f"d1={d1}")#d1={1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
查
dictname[key], 通过字典的键访问值
D = {'Zhang San':60, '李四':70, 'Wang Wu':80}
print(D['李四'])#70
dictname.get(key, default=None), 不改变原字典
D1=dict([('Zhang',99), ('王五',87),\
('Li Si',87)])
print(D1.get('王五'))
print(D1.get('Zhang',-1))
print(D1.get('Ming Wu',100))
print(D1)
###
87
99
100
{'Zhang': 99, '王五': 87, 'Li Si': 87}
dictname.setdefault(key, default=None), 类似于get, 但当key不存在字典时,会将key default值添加到字典,此时会改变原字典。
dict = {'Name': 'Runoob', 'Age': 7}
print ("Age 键的值为 : %s" % dict.setdefault('Age', None))
print ("Sex 键的值为 : %s" % dict.setdefault('Sex', None))
print ("新字典为:", dict)
###
Age 键的值为 : 7
Sex 键的值为 : None
新字典为: {'Age': 7, 'Name': 'Runoob', 'Sex': None}
obj in dictname, 只访问字典的键
D1=dict([('Zhang',99), ('王五',87),('Li Si',87)])
print('Zhang' in D1)#True
print('Ming Wu' in D1)# False
增
dictname[new_key]=new_value
d1=dict()
d1["key"]="value"
print(d1)
###
{'key': 'value'}
删
1、del dictname[key],删除字典里的键值对。
2、del dictname,删除整个字典。
3、dictname.clear(),清空字典,字典将变为空字典{}
d1=dict.fromkeys(["key1","key2","key3"])
print(d1)
del d1["key2"]
print(d1)
d1.clear()
print(d1)
del d1
print(d1)
###
{'key1': None, 'key2': None, 'key3': None}
{'key1': None, 'key3': None}
{}
NameError: name 'd1' is not defined
改
dictname[key]=new_value
d1=dict.fromkeys(["key1","key2","key3"])
print(d1)
d1["key2"]=999
print(d1)
###
{'key1': None, 'key2': None, 'key3': None}
{'key1': None, 'key2': 999, 'key3': None}
遍历字典
d1={i:i**2 for i in range(1,10)}
print(f"d1={d1}")
keys=[i for i in d1.keys()]
values=[i for i in d1.values()]
items=[i for i in d1.items()]
print(f"keys={keys}\nvalues={values}\nitems={items}")
print(d1.keys())
print(type(d1.keys()))
###
d1={1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
keys=[1, 2, 3, 4, 5, 6, 7, 8, 9]
values=[1, 4, 9, 16, 25, 36, 49, 64, 81]
items=[(1, 1), (2, 4), (3, 9), (4, 16), (5, 25), (6, 36), (7, 49), (8, 64), (9, 81)]
dict_keys([1, 2, 3, 4, 5, 6, 7, 8, 9])
<class 'dict_keys'>
取出 值 最大的 键
即输出 value 最大的 key。
max(dictname,key=dictname.get)
函数与方法
函数
序号 | 函数及描述 | 实例 |
---|---|---|
1 | len(dictname) 计算字典元素个数,即键的总数。 | >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> len(dict) 3 |
2 | str(dictname) 输出字典,以可打印的字符串表示。 | >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> str(dict) "{'Name': 'Runoob', 'Class': 'First', 'Age': 7}" |
3 | type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。 | >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> type(dict) <class 'dict'> |
序号 | 函数及描述 |
---|---|
1 | radiansdict.clear() 删除字典内所有元素 |
2 | radiansdict.copy() 返回一个字典的浅复制 |
3 | radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
4 | radiansdict.get(key, default=None) 返回指定键的值,如果键不在字典中返回 default 设置的默认值 |
5 | key in dict 如果键在字典dict里返回true,否则返回false |
6 | radiansdict.items() 以列表返回可遍历的(键, 值) 元组数组 |
7 | radiansdict.keys() 返回一个迭代器,可以使用 list() 来转换为列表 |
8 | radiansdict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
9 | radiansdict.update(dict2) 把字典dict2的键/值对更新到dict里 |
10 | radiansdict.values() 返回一个迭代器,可以使用 list() 来转换为列表 |
11 | pop(key,default=-1) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 |
12 | popitem() 随机返回并删除字典中的最后一对键和值。 |
参考资料
菜鸟教程 https://www.runoob.com/python3/python3-dictionary.html