除开列表,字典是python中又一灵活的数据结构。二者的主要差别在于:列表是有序的对象集合,字典是无序的对象集合。且列表是按照偏移存取数据的,而字典是按照键存取数据的。
字典的创建
dict函数
>>> d=dict([('name','小明'),('sex','男')])
>>> d
{'name': '小明', 'sex': '男'}
或
>>> d=dict(name='小红',sex='女')
>>> d
{'name': '小红', 'sex': '女'}
直接赋值
>>> d={'name':'小刚','sex':'男'}
>>> d
{'name': '小刚', 'sex': '男'}
字典就是以一对对键值对显示的,其中,冒号左边的是键(key),冒号右边的是值(value),元素之间以逗号隔开。字典的值是唯一的,但值不是。
字典不是序列,它是映射关系对象的集合。但是它在操作上与其他序列有类似的地方。
通过键存取值
>>> d=dict(name='小明',sex='男')
>>> d
{'name': '小明', 'sex': '男'}
>>> d['age']=12
>>> d
{'name': '小明', 'sex': '男', 'age': 12}
>>> d['name']
'小明'
查看元素的长度(数量)
>>> len(d)
3
字典方法
1、clear清空字典中所有的键值对
>>> d=dict(name='小明',sex='男')
>>> d
{'name': '小明', 'sex': '男'}
>>> d.clear()
>>> d
{}
2.copy复制一个相同的字典副本
>>> d1=dict(name='小明',sex='男')
>>> d2=d1.copy()
>>> d1
{'name': '小明', 'sex': '男'}
>>> d2
{'name': '小明', 'sex': '男'}
3.get获取键对应的值,如果没有则返回None
>>> d.get('name')
'小明'
>>> print(d.get('age'))
None
4.items返回字典所有的键值对
>>> d={'name': '小明', 'sex': '男', 'age': 12}
>>> d.items()
dict_items([('name', '小明'), ('sex', '男'), ('age', 12)])
5.keys方法返回字典所有的键,values返回字典所有的值
>>> d.keys()
dict_keys(['name', 'sex', 'age'])
>>> d.values()
dict_values(['小明', '男', 12])
8.pop删除指定键值对,并返回它的值
>>> d={'name': '小明', 'sex': '男', 'age': 12}
>>> d.pop('age')
9.popitem随机删除一对键值对,并返回它。
>>> d={'name': '小明', 'sex': '男', 'age': 12}
>>> d.popitem()
('age', 12)
>>> d
{'name': '小明', 'sex': '男'}
>>> d.popitem()
('sex', '男')
>>> d
{'name': '小明'}
>>>
10.update根据另一字典的内容更新字典
>>> d1={'name': '小明', 'sex': '男', 'age': 12}
>>> d2={'name': '小红', 'sex': '女'}
>>> d1.update(d2)
>>> d1
{'name': '小红', 'sex': '女', 'age': 12}
字典推导
从python2.7开始,列表推导和生成器表达式的概念就应用到了字典上,于是就有了字典推导。字典推导能从以键值对作为元素的可迭代对象中构建出字典。如:
>>> animals_list=[('cat','猫'),('dog','狗'),('pig','猪'),('tiger','虎'),('wolf','狼')]
>>> animals_dict={e_name:c_name for e_name,c_name in animals_list}
>>> animals_dict
{'cat': '猫', 'dog': '狗', 'pig': '猪', 'tiger': '虎', 'wolf': '狼'}