一、字典创建
1、字典也称作映射,由键和值组成,键值对称为项(item),每个键值之间都用冒号(:)分隔,最外层用花括号。空字典是没有任何项:{}。字典的键必须唯一,值可以重复,字典是无序的。键可以是任何不可变的类型,可能是数字、字符串或元组,其中数字不一定是整数。
d = {12:'数字键', 'zifu':'字符键', (1,2):'元组键'}
print(d) #{12: '数字键', 'zifu': '字符键', (1, 2): '元组键'}
#空字典
d = {} 或者 d = dict()
2、使用 dict() 创建
a = [['name', '留的华'], ('age', 42),]
d = dict(a)
print(d) #{'name': '留的华', 'age': 42}
3、使用关键字实参创建
d = dict(name='留的华',age=43)
print(d) #{'name': '留的华', 'age': 43}
4、可以对字典中不存在的值赋值,即在字典中新增了一个项,如果对列表不存在的值赋值将报错。
5、使用in操作的时候,是查找键是否在字典中而不是值
d = {12:'数字键', 'zifu':'字符键', (1,2):'元组键'}
print(12 in d) #True
6、字典存储的时候,是根据key取的hash计算存储的位置(hash(key)),python中字典是根据key查询value所在的位置。字段的存储方式导致会浪费较大的内存,因为hash(key)计算的值不一定是连续的。
7、字典元素遍历
a = {'name': '留的华', 'age': 43, 'gender':[0,1,2]}
for i in a:
print(i) #输出对应的key值
二、使用字典格式化
字符串格式化可以通过format_map直接使用字典传值。
a = {'name': '留的华', 'age': 43, 'gender':'男'}
s = "今天入职的人叫:{name},年龄:{age}".format_map(a)
print(s) #今天入职的人叫:留的华,年龄:43
三、字典方法
1、clear方法,删除所有的字典项,将字典置为空。
a = {'name': '留的华', 'age': 43, 'gender':'男'}
a.clear()
print(a) #{}
2、复制方法,返回一个新字典,包括copy浅复制和deepcopy深复制,其中浅复制,值是可变类型,修改的时候原始和新的字典都会变。深复制即修改原始的值不会影响新的字典。
a = {'name': '留的华', 'age': 43, 'gender':[0,1,2]}
b = a.copy()
c = deepcopy(a)
a['gender'][0] = 3
a['age'] = 18
print(a) #{'name': '留的华', 'age': 18, 'gender': [3, 1, 2]}
print(b) #{'name': '留的华', 'age': 43, 'gender': [3, 1, 2]}
print(c) #{'name': '留的华', 'age': 43, 'gender': [0, 1, 2]}
3、fromkeys方法,根据指定的键创建字典,值都是None。
a = dict.fromkeys(['name', 'age', 'gender'])
print(a) #{'name': None, 'age': None, 'gender': None}
4、get方法,根据键获取值,如果没有对应的键,返回None,并且可以设置默认返回值。通过[]方式获取值,如果不存在,就会抛出keyError异常。
a = {'name': '留的华', 'age': 43, 'gender':[0,1,2]}
print(a.get('name','dehua'), ) #留的华
5、items方法,返回一个包含所有字典项的列表,其中每个元素都为(key, value)的形式。字典项在列表中的排列顺序不确定。返回值属于一种名为字典视图的特殊类型。
a = {'name': '留的华', 'age': 43, 'gender':[0,1,2]}
print(list(a.items())) #转成列表输出
print(a.items())
输出:
[('name', '留的华'), ('age', 43), ('gender', [0, 1, 2])]
dict_items([('name', '留的华'), ('age', 43), ('gender', [0, 1, 2])])
6、keys方法,返回一个字典视图,其中包含指定字典中的键。
a = {'name': '留的华', 'age': 43, 'gender':[0,1,2]}
print(a.keys()) #dict_keys(['name', 'age', 'gender'])
7、方法values,返回一个由字典中的值组成的字典视图,返回的视图可能包含重复的值,因为字典值是可以重复的。
a = {'name': '留的华', 'age': 43, 'gender':[0,1,2]}
print(a.values()) #dict_values(['留的华', 43, [0, 1, 2]])
以上items(),keys(),values()三个方法返回的都是字典视图。
四、字典生成式
name = ['a','b','c']
age = [11,18,9]
dis = {i:j for i,j in zip(name,age)}
print(dis) #{'a': 11, 'b': 18, 'c': 9}
print(dict(zip(name,age))) #{'a': 11, 'b': 18, 'c': 9}
五、字典值是函数
def showTime():
print(datetime.datetime.now())
#其中字典值填写函数名称
t = {'time':showTime, 'after': 1}
#调用
t['time']() #2023-04-10 22:57:08.058033
关注公众号同步更新: