在Python中,字典(Dictionary)是一种可变、无序的数据结构,用于存储键值对(key-value pairs)。它是一种非常常用的数据类型,可以用来表示和管理各种信息。
字典的定义有两种方式,代码示例:
# 字典的定义
d0 = {}
d1 = dict()
print(type(d0), type(d1))
输出结果:<class 'dict'> <class 'dict'>
注意:
????????1. 字典的格式是 键(key)值(value)对
????????2 .键与值之间使用冒号隔开 ?多个键值对之间使用逗号隔开
?代码示例:
d2 = {
"name": "王思聪",
"age": 20,
"addr": "郑州",
}
print(type(d2))
?输出结果:{'name': '王思聪', 'age': 20, 'addr': '郑州'}
小tips:字典可以无限嵌套。
?字典的键和值的规则:
- 键必须是不可变数据类型,不能是列表,字典。
- 可以是五种基本类型:int、float、str、bool、None。
- 元组是不可变数据类型,可以作为字典的键。
- 在使用字典的过程中,99.99%的键都是用字符串。
- 键不可以重复,值可以。
- 字典的值可以是任何数据类型。?
?代码示例:
# 字典的值可以是任意数据类型
d3 = {
"key1": "value1",
"key2": 100,
"key3": 3.14,
"key4": False,
"key5": None,
"key6": [1, 2, 3],
"key7": (100, ),
"key8": {
"key11": {
},
"key12": [
{
"id": 101,
"name": "娃哈哈"
},
{
"id": 102,
"name": "可口可乐"
},
{
"id": 103,
"name": "营养快线"
}
]
}
}
print(type(d3), d3)
输出结果 :<class 'dict'> {'key1': 'value1', 'key2': 100, 'key3': 3.14, 'key4': False, 'key5': None, 'key6': [1, 2, 3], 'key7': (100,), 'key8': {'key11': {}, 'key12': [{'id': 101, 'name': '娃哈哈'}, {'id': 102, 'name': '可口可乐'}, {'id': 103, 'name': '营养快线'}]}}
字典常用的遍历方式主要有三种,分别是:遍历字典的所有键、遍历字典的所有值、遍历字典的所有键值对。?
这三种遍历方式都需要用到不同的方法,我会通过代码进行演示。
keys函数:获取字典的所有键
values函数:获取字典的所有值
items函数:获取字典的所欲键值对
d0 = {"日本": "喵桑", "法国": "马卡龙", "俄罗斯": "普京"}
# 遍历字典的所有键
for key in d0.keys():
print(key, d0[key])
# 遍历字典的所有值
for value in d0.values():
print(value)
# 遍历字典的所有键值对
for key, value in d0.items():
print(key, value)
输出结果:?
字典的遍历还有另外一种方式,?但是很不常用,只需要了解就好:
d0 = {"小日本": "八嘎呀路", "法国": "马卡龙", "俄罗斯": "普京"}
# 直接遍历
for i in d0:
print(i)
输出结果:小日本
??????????????????法国
? ? ? ? ? ? ? ? ? 俄罗斯
通过键名就能直接获取和修改键名对应的值,以下演示的方法是一种比较好用的方法,字典名+中括号+键名。
d0 = {"name": "王健林","age": 20}
print(d0, id(d0))
# 设置键 如果键已经存在则替换
d0["name"] = "王思聪"
print(d0, id(d0))
# 获取键对应的值
print(d0["name"], d0["age"])
输出结果:
{'name': '王健林', 'age': 20} 1896863191104
{'name': '王思聪', 'age': 20} 1896863191104
王思聪 20
len函数可以获取键值对的个数。
d1 = {
"name": "王思聪",
"age": 20,
"addr": "郑州"
}
# len 获取字典键值对个数
print(len(d1))
输出结果:3?
字典中关于删除的函数有pop、popitem、clear。?
?用pop函数,可以根据键删除指定的键值对,返回值:
d2 = {
"name": "王思聪",
"age": 20,
"addr": "郑州"
}
# 根据键删除指定的键值对 返回值
r = d2.pop("name")
print(r, d2, "name" in d2)
输出结果:
王思聪 {'age': 20, 'addr': '郑州'} False?
用popitem删除最后一个写的键值对(python 独有):
d2 = {
"name": "王思聪",
"age": 20,
"addr": "郑州"
}
# 删除最后一个写的键值对(python 独有)
r = d2.popitem()
print(r, d2)
输出结果:
?('addr', '郑州') {'name': '王思聪', 'age': 20}
?最后还有一个clear函数,就是清空字典。
d2 = {
"name": "王思聪",
"age": 20,
"addr": "郑州"
}
# 清空
d2.clear()
print(d2)
输出结果:{}?
添加使用到的函数有 setdefault、update。另外有一个函数fromkeys的作用是初始化一个字典。
?setdefault:1.??如果已经存在该键 则不添加 返回原始值
? ? ? ? ? ? ? ? ? ? ? 2. 如果不存在则添加
d3 = { "name": "王思聪", "age": 20, "addr": "郑州" } # 如果已经存在该键 则不添加 返回原始值 # 如果不存在则添加 r = d3.setdefault("sex", "男") print(d3, r)
输出结果:{'name': '王思聪', 'age': 20, 'addr': '郑州', 'sex': '男'} 男
update:?将新字典中所有键值对,合并到原有字典
注意:括号中加的是字典。
d3 = { "name": "王思聪", "age": 20, "addr": "郑州" } # 将新字典中所有键值对 合并到原有字典 d3.update({ "sex": "男", "age": 25 }) print(d3)
输出结果:{'name': '王思聪', 'age': 25, 'addr': '郑州', 'sex': '男'}
fromkeys: 就是用于初始化一个字典,但用的较少,了解就好。
# 初始化一个字典 d4 = dict.fromkeys(["key1", "key2", "key3"], 100) print(d4)
?输出结果:{'key1': 100, 'key2': 100, 'key3': 100}
?get:就是根据键获取值,当取不到值时,会返回None
d4 = {
"name": "王思聪",
"age": 20,
"addr": "郑州"
}
# 取不到返回None
print(d4.get("name1", "马云"))
# 取不到报错
print(d4["name1"])
?输出结果:
报错是因为有 print(d4["name1"]) 这句代码,而键 name1 并不存,所以报 KeyError(键错误)。
持续更新中,想要了解更多,可以关注我的博客哦🌹🌹🌹
?