字典
一,简介
字典是储存可变数量键值对的数据结构,其形式如下所示:
{<键1>:<值1>,<键2>:<值2>,…,<键n>:<值n>}
{1:2,2:2,3:4} #{1:2,2:2,3:4}
字典可以通过键进行索引返回对应的值,由于字典的键是唯一的且固定的,因此键是不可变对象,像字符串,元组,数值等数据类型都可以作为字典的键。
二,字典的操作
(一)创建字典
1.通过大括号{}与键值对结合。
2.通过dict函数转换创建
dict(mapping):对映射对象转化为字典
mapping:需要传入一个元素为二维对象的可迭代对象。
#传入一个元素为二维字符串的列表
dict(['12','23']) #{'1': '2', '2': '3'}
#传入一个元素为二维元组的元组
dict(((1,2),(2,3))) #{1:2,2:3}
3.通过fromkeys函数批量创建
dict.formkeys(iterable,value=None):通过键值可迭代对象批量创建值相同的键值对字典。
dict:任意字典对象。
iterable:位置参数。键的可迭代对象。
value:可选参数。字典的值,默认值为空。
#传入一个字符串可迭代对象
dict.fromkeys('1234',8) #{'1': 8, '2': 8, '3': 8, '4': 8}
#传入一个元组可迭代对象
dict().fromkeys((1,2,3,4)) #{1: None, 2: None, 3: None, 4: None}
4.通过copy函数浅复制创建
odict.copy():通过浅复制odict创建字典。
注意:浅复制指的是只对一级目录进行复制,对二级目录进行操作还是会改变原对象。
dict1={1:1,2:[5,6,7]}
dict2=dict1.copy()
dict2 #{1:1,2:[5,6,7]}
#对一级目录进行修改
dict2[1]=[1,2,3]
dict2 #{1:[1,2,3],2:[5,6,7]}
dict1 #{1:1,2:[5,6,7]}
#对二级目录进行修改
dict2[2][1]=9
dict2 #{1:[1,2,3],2:[5,9,7]}
dict1 #{1:1,2:[5,9,7]}
(二)添加\修改元素
1.通过索引添加\修改单个元素
dict[键]=<值>:如果键存在则修改原字典值。
#添加元素
a={1:2,2:3,3:4}
a[4]=5
a #{1:2,2:3,3:4,4:5}
#修改元素
a={1:2,2:3,3:4}
a[1]=5
a #{1:5,2:3,3:4}
2.通过update函数批量添加\修改元素
dict.update(object)
object:位置参数。需要传入一个元素为二维对象的可迭代对象,如果键值存在则修改原字典。
#传入一个元素为二维字符串的列表
a={1:2,2:3,3:4,4:5}
a.update(['12','23'])
a #{1:2,2:3,3:4,4:5,'1':'2','2':'3'}
#传入一个元素为二维元组的元组,修改原字典
a={1:2,2:3,3:4,4:5}
a.update(((1,5),(2,9)))
a #{1:5,2:9,3:4,4:5}
(三)删除元素
1.删除指定元素
(1)通过del语句
del dict[键]
(2)通过pop函数
dict,pop(key[,default]):键存在则返回相应值,同时删除键值对,否则返回默认值。
key:位置参数。输入字典中的键。
default:可选参数。如果字典中的键不存在时必须填入,否则报错。
a={1:2,2:3,3:4,4:5}
del a[1]
a #{2:3,3:4,4:5}
a.pop(2) #3
a #{3:4,4:5}
a.pop(5,4) #4
2.清空字典
dict.clear()
a={1:2,2:3,3:4,4:5}
a.clear()
a #{}
dict1={1:2,2:3}
dict1.pop(1) #2
dict1 #{2:3}
dict1.pop(3,4) #4
3.随机删除最后的元素
dict.popitem():从字典中随机删除最后一组键值对,并以二元组的形式返回删除的元素。
注意:字典为无序组合数据类型。
dict1={1:2,2:3}
dict1.popitem() #(2,3)
dict1 #{1:2}
(四)查询字典
1.查询所有键
dict.keys():以可迭代对象方式返回所有键信息。
{1:2,2:3}.keys() #dict_keys([1, 2])
2.查询所有值
dict.values():以可迭代对象方式返回所有值信息。
{1:2,2:3}.values() #dict_values([2, 3])
3.查询所有键值对
dict.items():以二元组可迭代对象方式返回所有键值信息。
{1:2,2:3}.items() #dict_items([(1, 2), (2, 3)])
4.查询键对应值
(1)通过索引方式
dict[key]
(2)通过get函数
dict.get(key[,default=None]):键存在则返回对应值,否则返回默认值。
key:位置参数。字典中的键。
default:可选参数。键不存在时返回的值,默认为None。
dict1={1:2,2:3}
dict1.get(1) #2
dict1.get(3,4) #4
dict1[1] #2