字典:字典是一个无序的,可以修改的,元素呈键值对的形式,以逗号分割的,以大括号包围的序列。
字典的格式:
key : value 键值对
变量名={ key1 : value1 ,key2 : value2…}
注意:
1.使用的符号都是英文表示。
2.key必须是不可变数据类型。
一、字典的定义
dic = {'name': 'zs', 'age': 32, 'height': 1.65}
print(dic)
print(type(dic)) # <class 'dict'> # 注意定义变量的时候不能定义成dict
二、字典的key的类型只能是不可变数据类型(可哈希类型),value可以是任意数据类型
例:
dic = {'name': 'zs', 10: 32, (1, 2, 3): (2, 3, 4)}
print(dic)
dic = {'name': 'zs', 10: 32, [1, 2, 3]: (2, 3, 4)}
print(dic) # 报错,因为[1,2,3]的类型是可变数据类型,key一定要是不可变数据类型
小知识点:
可变数据类型(不可哈希数据类型)
不可变数据类型(可哈希数据类型)
三、字典的增加操作
1、setdefault()
添加键值对,如果键在字典中已经存在了,就不会覆盖字典的中值
dic = {'name': 'zs', 'age': 10, 'height': 1.75}
dic.setdefault('weight', 170)#没有就添加进字典
dic.setdefault('weight', 180)#字典中有了不会覆盖
print(dic)
2、根据key来设置值
如果key存在,就直接覆盖掉原有的值,如果不存在,添加新键值对。
dic = {'name': 'zs', 'age': 10, 'height': 1.75}
dic['weight'] = 180#字典中没有直接添加新键值对
dic['weight'] = 120 #通过key值修改覆盖
print(dic)
四、删除操作
1、 根据键删除键值对
dic = {'name': 'zs', 10: 1.75, 'weight': 129, 'age': 10}
dic.pop('name')
print(dic)
2、 popitem() 随机删除一个键值对
dic = {'name': 'zs', 10: 1.75, 'weight': 129, 'age': 10}
dic.popitem()
print(dic)
3、 清除字典中的所有键值对,只剩下{}
dic = {'name': 'zs', 10: 1.75, 'weight': 129, 'age': 10}
dic.clear()
print(dic)#只剩下{}
4、del 直接从内存中删除变量,效果就是报错,
dic = {'name': 'zs', 10: 1.75, 'weight': 129, 'age': 10}
del dic
print(dic)
del 也可以根据键删除。
dic = {'name': 'zs', 10: 1.75, 'weight': 129, 'age': 10}
del dic['name']
print(dic)
五、修改操作
dic = {‘name’: ‘zs’, ‘weight’: 129, ‘age’: 10}
1、根据键来修改值
dic = {'name': 'zs', 'weight': 129, 'age': 10}
dic['name'] = '赵四'
print()
2、update()
需要传递一个字典,如果key相同就直接修改对应的value,如果key不存在
就直接添加键值对
dic = {'name': 'zs', 'weight': 129, 'age': 10}
dic1 = {'name': '赵四', 'height': 1.75}
dic.update(dic1)
print(dic)
六、查找操作
dic = {‘name’: ‘zs’, ‘weight’: 129, ‘age’: 10}
1、get()
根据键获取对应的值,我们可以定义一个变量来就是返回的值
dic = {'name': 'zs', 'weight': 129, 'age': 10}
value = dic.get('name')
print(value)
2、keys()获取所有的键
dic = {'name': 'zs', 'weight': 129, 'age': 10}
ret = dic.keys()
print(ret)
3、values()获取所有的值
dic = {'name': 'zs', 'weight': 129, 'age': 10}
values = dic.values()
print(values)
4、items()将字典返回列表套元组的形式
dic = {'name': 'zs', 'weight': 129, 'age': 10}
ret = dic.items()
print(ret)
#dict_items([('weight', 129), ('name', 'zs'), ('age', 10)])
5、len()用来计算键值对的个数
dic = {'name': 'zs', 'weight': 129, 'age': 10}
ret = len(dic)
6、fromkeys()元组转换成值为Noen的字典,Noen可以自定义
tup = (1, 2, 3)
ret = dict.fromkeys(tup)#把元组转换成值为Noen的字典
ret = dict.fromkeys(tup, 'aa')#把元组转换成值为'aa'的字典
print(ret)
七、in 和 not in
dic = {'name': 'zs', 'weight': 129, 'age': 10}
keys = dic.keys()
print(keys)
if 'name' not in keys:
dic['name'] = '赵四'
else:
dic['name'] = '尼古拉斯'
print(dic)
in和not in同样作用,意思相反
小知识点:
dic = {'name': 'zs', 'weight': 129, 'age': 10}
for key in dic:
print(key)#取出所有键
print(dic.items())#字典转列表套元组
for item in dic.items():
print(item)#取出里面的键值对
for key, value in dic.items():
print(key, value)#取出里面的键和值