1. 什么是字典
字典就是 key-value 键值对数据的集合(且 key 不可重复);
字典是可变的,无序的;
字典中,key 必须是可哈希的数据类型;
2. 字典的定义和初始化
定义字典可以使用 d = dict() 或者 d = {} 两种方法;
d = dict() #定义字典
d = {}
使用键值对的方式初始化字典;
d = {‘a’:1, ‘b’:2}
print(d) #输出:{‘a’: 1, ‘b’: 2}
使用传参的方式初始化字典;
d = dict(a=1, b=2)
print(d) #输出:{‘a’: 1, ‘b’: 2}
使用元组的方式初始化字典(比较少见);
d = dict(((‘a’,1),(‘b’, 2)))
print(d) #输出:{‘a’: 1, ‘b’: 2}
使用字典构造器的构造方法 fromkeys() 来通过可迭代对象批量的传值;
d = dict.fromkeys(range(5), ‘hello’)
print(d) #输出:{0: ‘hello’, 1: ‘hello’, 2: ‘hello’, 3: ‘hello’, 4: ‘hello’}
3. 字典的访问
d = {‘a’:10, ‘b’:20}
d.setdefault(‘c’, 30) # 设置默认值
print(d[‘a’]) #输出:10
print(d.get(‘d’, None)) #输出:None
print(d) #输出:{‘a’: 10, ‘b’: 20, ‘c’: 30}
字典可以通过 key 来访问;
使用 setdefault() 方法来设置默认值(只能加一个新的值,不能覆盖原有值);
使用 get() 方法通过 key 来访问字典,当 key 存在时,返回 value 值,key 不存在时返回则 None;
4. 字典修改
d = {‘a’:1, ‘b’:2}
d.update({‘c’: ‘3’})
print(d) #输出:{‘a’: 1, ‘b’: 2, ‘c’: ‘3’}
d[‘a’] = 10
print(d) #输出:{‘a’: 10, ‘b’: 2, ‘c’: ‘3’}
使用 update() 方法来修改字典;
直接使用 key 来修改字典;
5. 字典插入
直接使用 key 来插入;
d = {‘a’:10, ‘b’:20}
d[‘c’] = 30
print(d) #输出:{‘a’: 10, ‘b’: 20, ‘c’: 30}
6. 字典的删除
d = {‘a’:10, ‘b’:20}
pop:通过 pop() 方法删除指定 key 的 value;
d.pop(‘a’,None)
print(d) #输出:{‘b’: 20}
popitem:随机删除任意键值对;
d.popitem() #删除任意键值对
print(d) #输出:{‘a’: 10}
clear:删除字典所以元素;
d.clear()
print(d) #输出:{}
del:通过 del 魔术方法删除指定 key 的 value;
del d[‘a’]
print(d) #输出:{‘b’: 20}
7. 字典的遍历
d = {‘a’:10, ‘b’:20}
# key 的遍历
for key in d:
print(key)
for key in d.keys():
print(key)
# value 的遍历
for key in d:
print(d[key])
for key in d.keys():
print(d.get(key))
# key/value 遍历
for item in d.items():
print(item)
for key,value in d.items():
print(key, value)
字典可以使用 for 来遍历的;
for 循环可以单独遍历 key,单独遍历 value,key 和 value 一起遍历;
单独遍历 key 或者 value 时需要用到 keys;
key 和 value 一起遍历需要是用到 items;
8. 标准库中的字典
默认字典:defaultdict,当字典里的 key 不存在但被查找时,返回的不是 keyError 而是一个默认值,默认字典初始化什么类型,返回值对应该类型的空值(如 int 返回 0,str 返回空字符串);
from collections import defaultdict
dict1 = defaultdict(int) # 默认值是 0
print(dict1[1]) #输出:0
print(dict1[2]) #输出:0
dict2 = defaultdict(set) # 默认的是 set()
print(dict2[1]) #输出:set()
print(dict2[2]) #输出:set()
dict3 = defaultdict(str) # 默认是空字符串
print(dict3[1])
dict4 = defaultdict(list) # 默认是空列表 []
print(dict4[1]) #输出:[]
有序字典:OrderedDict,记录了 key 插入的顺序,也就是让无序的字典变为有序;
from collections import OrderedDict
import random
d = {‘ 赵 ’: 1, ‘ 钱 ’: 2, ‘ 孙 ’: 3, ‘ 李 ’: 4}
keys = list(d.keys()) #把键值存入列表中
print(keys) #输出:[‘ 赵 ’, ‘ 钱 ’, ‘ 孙 ’, ‘ 李 ’]
random.shuffle(keys) #随机打乱列表中的 keys 值
print(keys)
order_d = OrderedDict() #创建一个有序字典对象
for key in keys:
order_d[key] = d[key]
print(order_d.keys())
参考:https://www.9xkd.com/user/pla…