字典是python中的唯一的映射类型,采用键值对的形式存储数据(key-value)。python对key进行哈希函数运算,根据计算结果决定value存储的地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
字典是除列表以外python之中最灵活 的内置数据结构类型。列表是有序的对象结合,字典是无序的对象结合。两者之间的区别在于,字典当中的元素试试通过键来存取得,而不是通过便宜存取。
字典的特点:无序,键唯一
字典中的键是唯一的需要使用不可变类型作为键名;
值是可以为列表,字典,整型,字符串,元组。
通过键名映射指向值。
可变类型:列表,字典
字典-操作:
增加
>>> dic={ }
>>> dic['name'] = 'Lilei' #键 ——>值 键是唯一的
>>> dic['age'] = 22
>>> print(dic)
{'name': 'Lilei', 'age': 22}
setdefault()方法增加,如果存在添加的键,则不会对已经存在的键值对进行修改,且返回已经有的对应的值返回。如果键值对不存在则增加键值对并返回相应的值。
>>> dic ={'name':'HanMei'}
>>> a=dic.setdefault('name','Lilei') #已经存在name,则不会对已经有的name的值进行修改,返回之前的值HanMei
>>> print(dic)
{'name': 'HanMei'}
>>> print(a)
HanMei
====================
>>> dic ={'name':'HanMei'}
>>> a=dic.setdefault('age',22) #不存在age,直接增加键值对,且返回增加的age对应的值22
>>> print(dic)
{'name': 'HanMei', 'age': 22}
>>> print(a)
22
修改值
>>> dic ={'name':'HanMei'}
>>> dic['name']='Lilei' #对应的键进行赋值修改
>>> print(dic)
{'name': 'Lilei'}
update()方法,类似list得extend()方法,如果两个字典存在相同的键,会更新为最新的值
>>> dic={'name':'HanMei','age':22,'性别':'女'}
>>> dic2={1:'x',2:'y'}
>>> dic.update(dic2) #将dic2的键值更新到dic中,无重复键
>>> print(dic)
{'name': 'HanMei', 'age': 22, '性别': '女', 1: 'x', 2: 'y'}
=================================
>>> dic={'name':'HanMei','age':22,'性别':'女'}
>>> dic2={'name':'x',2:'y'}
>>> dic.update(dic2) #将dic2的键值更新到dic中,name重复则将dic2的值更新为name的值
>>> print(dic)
{'name': 'x', 'age': 22, '性别': '女', 2: 'y'}
字典值查询,通过键进行值得查找
>>> dic={'name':'HanMei','age':22,'性别':'女'}
>>> dic['name'] #查找name对应的值
'HanMei'
>>> dic={'name':'HanMei','age':22,'性别':'女
>>> dic.keys() #获取键名
dict_keys(['name', 'age', '性别'])
>>> dic['name']
'HanMei'
>>> print(list(dic.keys())) #获取键以list形式
['name', 'age', '性别']
>>> print(list(dic.values())) #获取值以list形式
['HanMei', 22, '女']
>>> dic={'name':'HanMei','age':22,'性别':'女'}
>>> dic.items() #获取键值对
dict_items([('name', 'HanMei'), ('age', 22), ('性别', '女')])
删除操作,类似list中的删除操作
>>> dic={'name':'HanMei','age':22,'性别':'女'}>>> del dic['name'] #删除指定的name
>>> dic
{'age': 22, '性别': '女'}
=========
>>> dic={'name':'HanMei','age':22,'性别':'女'}
>>> dic.clear()#清空字典
>>> dic
{}
==========
>>> dic={'name':'HanMei','age':22,'性别':'女'}
>>> dic.pop('name')#删除指定的name,且返回删除的键值的值
'HanMei'
==========
>>> dic={'name':'HanMei','age':22,'性别':'女'}
>>> dic.popitem()#随机删除其中的键值对,且元组形式返回删除的键值对
('性别', '女')
遍历字典
for i in dic:
print(i,dic[i])
这种方式遍历效率较高
for key,value in dic.items():
print(key,value)
该方式用到items()方法在数据量较大时会比较耗时