字典的key是唯一、不可变类型,value可以是任意数据类型。
dict1 = {"name": "小凛", "name": "20"} # 当key一样时,后面的value会覆盖前面的value
print(dict1)
# 执行结果:
{'name': '20'}
dict1 = {"姓名": "千寻", "年龄": "12"}
dict1["性别"] = "女"
print(dict1)
# 执行结果:
{'姓名': '千寻', '年龄': '12', '性别': '女'}
dict1 = {"姓名": "千寻", "年龄": "12"}
dict1["年龄"] = "20"
print(dict1)
# 执行结果:
{'姓名': '千寻', '年龄': '20'}
dict1 = {"姓名": "千寻", "年龄": "12"}
del dict1["年龄"] # 删除key对应的键值对
print(dict1)
# 执行结果:
{'姓名': '千寻'}
更新字典,将括号内的字典添加原字典中,如果key相同,value值覆盖
dict1 = {"姓名": "千寻", "年龄": "10", "爱好": "跳舞"}
dict2 = {"性别": "女", "爱好": "唱歌"}
dict1.update(dict2)
print(dict1)
# 执行结果:
{'姓名': '千寻', '年龄': '10', '性别': '女', '爱好': '唱歌'}
1.查询括号内key对应的value值
2.如果key不存在,则添加。value默认为None
dict1 = {"姓名": "千寻", "年龄": "10", "爱好": "跳舞"}
print(dict1.setdefault("年龄"))
# 执行结果:
10
dict1.setdefault("身份证","76543") # 当dict1中不存在key "身份证"时会添加进去,value指定为"76543"
print(dict1)
# 执行结果:
{'姓名': '千寻', '年龄': '10', '爱好': '跳舞', '身份证': '76543'}
查询括号内key对应的value值
dict1 = {"姓名": "千寻", "年龄": "10", "爱好": "跳舞"}
print(dict1.get("姓名"))
# 执行结果:
千寻
查询字典中所有的key
dict1 = {"姓名": "千寻", "年龄": "10", "爱好": "跳舞"}
print(dict1.keys())
# 执行结果:
dict_keys(['姓名', '年龄', '爱好'])
查询字典中所有的value
dict1 = {"姓名": "千寻", "年龄": "10", "爱好": "跳舞"}
print(dict1.values())
# 执行结果:
dict_values(['千寻', '10', '跳舞'])
查询字典中所有的键值对
dict1 = {"姓名": "千寻", "年龄": "10", "爱好": "跳舞"}
print(dict1.items())
# 执行结果:
dict_items([('姓名', '千寻'), ('年龄', '10'), ('爱好', '跳舞')])
for k, v in dict1.items():
print(k, v)
# 执行结果:
姓名 千寻
年龄 10
爱好 跳舞
复制
dict1 = {"姓名": "千寻", "年龄": "10", "爱好": "跳舞"}
dict2 = dict1.copy()
print(dict2)
# 执行结果:
{'姓名': '千寻', '年龄': '10', '爱好': '跳舞'}
删除括号内key对应的键值对
返回值:当前key对应的value
dict1 = {"姓名": "千寻", "年龄": "10", "爱好": "跳舞"}
print(dict1.pop("爱好")) # 返回当前被删除的键值对中key "爱好" 对应的value
print(dict1)
# 执行结果:
跳舞
{'姓名': '千寻', '年龄': '10'}
删除最后一对键值对
返回值:最后一对键值对
dict1 = {"姓名": "千寻", "年龄": "10", "爱好": "跳舞"}
print(dict1.popitem())
print(dict1)
# 执行结果:
('爱好', '跳舞')
{'姓名': '千寻', '年龄': '10'}
清空字典中所有的键值对
dict1 = {"姓名": "千寻", "年龄": "10", "爱好": "跳舞"}
dict1.clear()
print(dict1)
# 执行结果:
{}
前面提到字典的key是不可变类型,现在我们聊一聊什么是可变与不可变类型:
根据数据的id(在内存中的地址)是否改变,来区分它是可变类型还是不可变类型。
返回当前对象在内存中的地址
list1 = [1, 2, 3]
print(id(list1)) # 执行结果:1649339688512
list1.append(4)
print(id(list1)) # 执行结果:1649339688512
对于可变类型,可以直接使用方法,不需要重新赋值
str1 = "hello"
print(id(str1)) # 执行结果:2793521275120
str2 = str1.replace("h", "H") # 将字符串中的“h”替换为“H”
print(str2) # 执行结果:Hello
print(id(str2)) # 执行结果:2793519599920
对于不可变类型,在进行一系列操作之后,需要重新赋值(让它重新开辟一个内存空间)