字典是 python 的一种数据结构, 也是一种可变容器模型, 并且可以存储任意类型对象;
字典是由键和对应的值成对组成, 键可以对应多个值, 键和值之间使用冒号进行隔开, 每个元素使用逗号隔开, 元素存放在花括号中 {}.
字典也被成为关联数组和哈希表;
字典常用方法
1. 字典的创建
键必须独一无二, 值可以去任何数据类型, 但必须是不可变的;
- # 定义一个空的字典
- dict1 = {
- }
- print(dict1,type(dict1))
输出结果:
- {
- } <class 'dict'>
- # 定义一个普通的字典
- dict2 = {
- 1:'a',2:'b',3:'c',4:'d'
- }
- print(dict2,type(dict2))
输出结果:
{1: 'a', 2: 'b', 3: 'c', 4: 'd'} <class 'dict'>
2. 访问字典的值
字典是根据键来访问值, 如果键不存在, 执行会报错;
- dict2 = {
- 1:'a',2:'b',3:'c',4:'d'
- }
- print(dict2[2])
输出结果:
b
3. 修改字典
- dict2 = {
- 1:'a',2:'b',3:'c',4:'d'
- }
- dict2[2] = 'jjjj'
- print(dict2)
输出结果:
{1: 'a', 2: 'jjjj', 3: 'c', 4: 'd'}
4. 增加元素到字典
- dict2 = {
- 1:'a',2:'b',3:'c',4:'d'
- }
- dict2[5] = 'jjjj'
- print(dict2)
输出结果:
{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'jjjj'}
5. 字典的删除
- dict2 = {
- 1:'a',2:'b',3:'c',4:'d'
- }
- # 删除字典键为 2 的值
- del dict2[1]
- print(dict2)
- # 清空字典的所有元素
- dict2.clear()
- print(dict2)
- # 删除字典
- del dict2
- print(dict2)
- # 执行会报错: NameError: name 'dict2' is not defined
输出结果:
- {
- 2: 'b', 3: 'c', 4: 'd'
- }
- {
- }
- NameError: name 'dict2' is not defined
6. 字典的复制
副本的值改变不会对元数据产生影响
- # 返回一个字典的浅复制
- dict2 = {
- 1:'a',2:'b',3:'c',4:'d'
- }
- dict1 = dict2.copy()
- print(dict1,id(dict1))
- print(dict2,id(dict2))
- dict1[5] = 'hello'
- print(dict1,id(dict1))
- print(dict2,id(dict2)))
输出结果:
- {
- 1: 'a', 2: 'b', 3: 'c', 4: 'd'
- } 31033312
- {
- 1: 'a', 2: 'b', 3: 'c', 4: 'd'
- } 31033240
- {
- 1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'hello'
- } 31033312
- {
- 1: 'a', 2: 'b', 3: 'c', 4: 'd'
- } 31033240
7. 字典的内置函数 **
- radiansdict.fromkeys() #创建一个新字典, 以序列 seq 中元素做字典的键, val 为字典所有键对应的初始值
- radiansdict.get(key, default=None) #返回指定键的值, 如果值不在字典中返回 default 值
- radiansdict.has_key(key) #如果键在字典 dict 里返回 true, 否则返回 false
- radiansdict.items() #以列表返回可遍历的 (键, 值) 元组数组
- radiansdict.keys() #以列表返回一个字典所有的键
- radiansdict.setdefault(key, default=None) #和 get() 类似, 但如果键不已经存在于字典中, 将会添加键并将值设为 default
- radiansdict.update(dict2) #把字典 dict2 的键 / 值对更新到 dict 里
- radiansdict.values() #以列表返回字典中的所有值
来源: http://www.bubuko.com/infodetail-2962611.html