字典是用来存储含索引关系或者对应关系的一种数据类型。例如存放姓名和成绩的对应关系,和年龄的对应关系等等。
dict={ ‘ 键1’:值1,‘键2’:值2,.......};
一个键只能对应一个值,而一个值可以被多个键共享。
如果键不唯一,则该键对应的值为最后一对键值的值。
字符串和数字都可以当作键,列表不可以当作键。
查找
1.dict[ 键1 ]=值1;直接返回要查找键所对应的值;键不存在的时候会报错。
2.dict.get( 键1 )=值1;用函数返回该键的值,键不存在的时候不会报错。
3.dict.a.setdefault( 键1 );如果键不在字典中,则插入默认值(None)为的键。 如果关键字在字典中,则返回关键字的值,否则返回默认值(None)。
修改与增加
dict[ 键1 ]=值1;如果键1存在,就修改其对应的值1,如果键1不存在,就增加该键值对(键1:值1)。
dict.update(dict1);将dict1中的键值对,批量增加到dict中(不限制两者的键值类型)。
删除
dict.pop( 键1 );删除(键1:值1)键值对,并返回值1,若没有该键会报错。
dict.pop( 键1 ,值);设置任意一个值,若该键存在,返回值1,避免该键不存在的时候报错。
dict.popitem();默认删除字典dict中最后一对键值对,并以元组(tuple)的形式返回该键值对。
del dict[ 键1 ];删除该键1对应的值1,不做返回,若该键不存在会报错。
dict.clear();将该字典dict中的所有键值对清空。
键和值
获取所有的键:
aa=dict.keys();type(aa)='dict_keys'。
aa1=list(aa);将aa转换为列表aa1,得到dict的所有键组成的列表。
aa2=tuple(aa);将aa转换为元组aa2,得到dict的所有键组成的元组。
获取所有的值:
bb=dict.values();type(bb)='dict_values'。
bb1=list(bb);将bb转换为列表bb1,得到dict的所有值组成的列表。
bb2=tuple(bb);将bb转换为元组bb2,得到dict的所有值组成的元组。
判断键是否在字典中:
键1 in dict;返回一个bool类型,若键1在字典dict中,返回True。
字典的遍历
for i in dict:
print(i) #打印出字典dict中的所有的键。
print(dict[i]) #打印出字典dict中的所有键对应的值。
for i in dict.keys():
print(i,type(i)) #打印出字典中的所有的键,以及该键的类型。
for i in dict.values():
print(i,type(i)) #打印出字典中的所有的值,以及该值的类型。
其他
1. dict1=dict.copy();将字典dict中的所有键值对赋给字典dict1,两个字典地址不同,互不影响。
2.1. ditc1=dict.fromkeys(list1);生成一个新的字典,该字典的键为列表(list1)中的元素,该字典所有键的值为None,。
2.2. dict2=dict.fromkeys(list1,值1);生成一个新的字典,该字典的键为列表(list1)中的元素,该字典所有键的值为值1。
(以上两种方式中的列表(list1)可用元组(tuple1)代替)
(此处的dict可以直接使用内置的数据类型dict,见下图)
根据键不会重复的特性,该方法可以对列表或元组去重:
3. d=dict.items();type(d)='dict_items'。得到字典dict中所有的键值对。
d1=dict(d);则d1为新字典,且d1==dict。
d2=list(d);则创建新列表d2,d2的元素为(键:值)键值对。
d3=tuple(d);则创建新元组d3,d3的元素为(键:值)键值对。