1.字典的定义
Python中的字典是一种可变的数据结构,用于存储键值对。在字典中,每个键都是唯一的,并且与一个值相关联。字典使用大括号{}来定义,并且键和值之间使用冒号:
分隔,键值对之间使用逗号,
分隔。字典与列表类似,一个变量可以存储多个值,通过键可以快速获取值。但也有缺点,例如字典需要在内存中额外存储一些键,没有列表占用的内存小。
2.字典的键与值
下方是一个简单的字典定义的代码:
d4 = {
"id": 101,
"name": "马云",
"height": 180.0,
"has_money": True,
"birthday": None,
"houses": ["西湖别墅", "CBD大平层"],
"friends": ("马化腾", "马斯克"),
"hobbies": {
"1": "睡觉",
"2": "购物"
}
}
在这个例子中,"id","name","height","has_money"这种就称之为字典的键,而101,"马云",180,True这些就称之为字典的值,他们"id": 101就称之为字典的键值对。
其中,键是不可变的类型,且大部分的键都为字符串类型,值可以是任意类型。
3.字典的常见操作
和其他数据类型一样,字典也可以进行增加,删除,查询,修改。并且可以通过for循环来遍历字典中的所有键、值、键值对。
首先是添加字典:
d1 = {}
d1["id"] = 110
d1["name"] = "小王"
d1["sex"] = "男"
d1["age"] = 22
print(d1) # {'id': 110, 'name': '小王', 'sex': '男', 'age': 22}
如果原字典中没有这些键和对应的值,那么就将它添加上去,如果有就将原有的值更新为这些值。
还可以通过update()方法将一个字典合并到另一个字典中:
d1 = {}
d1["id"] = 110
d1["name"] = "小王"
d1["sex"] = "男"
d1["age"] = 22
print(d1)
d1.update({
"hobby":"听歌"
})
print(d1) # {'id': 110, 'name': '小王', 'sex': '男', 'age': 22, 'hobby': '听歌'}
其次是删除字典:可以使用pop()方法和popitem()方法对字典中的元素进行删除操作。
d1 = {
"id": 101,
"name": "小王",
"sex": "男",
"age": 22,
"hobby": "听歌"
}
# pop(键)删除指定键并返回对应值
print(d1.pop("id")) # 101
print(d1) # {'name': '小王', 'sex': '男', 'age': 22, 'hobby': '听歌'}
# popitem()删除最后一个键值对并返回
print(d1.popitem()) # ('hobby', '听歌')
print(d1) # {'name': '小王', 'sex': '男', 'age': 22}
然后是查询字典:
既可以通过get()方法来获取字典内的值,也可以进行遍历来获取字典内的键值对
d1 = {
"id": 101,
"name": "小王",
"sex": "男",
"age": 22,
"hobby": "听歌"
}
# get(a, b) 是一个方法,用于从字典中获取与键 a 关联的值。
# 如果字典中不存在键 a,则 get 方法会返回 b(默认值)。
# 使用该方法的好处是试图访问不存在的键也不会报错,而是返回指定的默认值b
print(d1.get("name"))
# 可以通过d1["a键"]来取得d1中a键对应的值
print(d1["hobby"])
# key()返回键,可以通过索引再返回值
for k in d1.keys():
print(k, d1[k])
# values()返回值,但不能通过值返回键
for v in d1.values():
print(v)
# items()返回键值对
for k, v in d1.items():
print(k, v)
字典还可以使用成员运算符 in 来判断键是否在字典中:
d1 = {
"id": 101,
"name": "小王",
"sex": "男",
"age": 22,
"hobby": "听歌"
}
if "id" in d1:
print(f'"id"在字典d1中')
else:
print(f'"id"不再字典d1中')