第6章 字典
6.1 简单的字典
item_0 = {'color': 'green', 'price': 5}
print(item_0['color'])
print(item_0['price'])
>>>
green
5
6.2 使用字典
字典是一系列键值对,每一个键都与一个值相关联,在 Python 中,字典用放在花括号({})中的一系列键值对表示:
item_0 = {'color': 'green', 'price': 5}
6.2.1 访问字典中的值
item_0 = {'color': '绿色', 'price': 5}
color = item_0['color']
price = item_0['price']
print(f"物品颜色为:{color},价格为:{price}元。")
>>>
物品颜色为:绿色,价格为:5元。
6.2.2 添加键值对
item_0 = {'color': '绿色', 'price': 5}
print(item_0)
item_0['discount'] = 9
print(item_0)
>>>
{'color': '绿色', 'price': 5}
{'color': '绿色', 'price': 5, 'discount': 9}
6.2.3 创建空字典
item_0 = {}
item_0['color'] = "绿色"
item_0['price'] = 5
print(item_0)
>>>
{'color': '绿色', 'price': 5}
6.2.4 修改字典中的值
item_0 = {'color': "绿色", 'price': 5}
print(item_0)
item_0['color'] = "黄色"
print(item_0)
>>>
{'color': '绿色', 'price': 5}
{'color': '黄色', 'price': 5}
6.2.5 删除键值对
item_0 = {'color': "绿色", 'price': 5, 'discount': 9}
print(item_0)
del item_0['discount']
print(item_0)
>>>
{'color': '绿色', 'price': 5, 'discount': 9}
{'color': '绿色', 'price': 5}
6.2.6 使用 get() 来访问值
方法 get() 的第一个参数(必须)用于指定键,第二个参数(非必须)为指定的键不存在时返回的值:
item_0 = {'color': "绿色", 'price': 5}
price = item_0.get('price', "无价格")
discount = item_0.get('discount', "无折扣")
print(f"价格:{price},折扣:{discount}。")
>>>
价格:5,折扣:无折扣。
6.3 遍历字典
6.3.1 遍历所有键值对
使用 for 循环和方法 items() 遍历所有键值对:
item_0 = {
'color': "绿色",
'price': 5,
'discount': 9
}
for key, value in item_0.items():
print(f"Key:{key}")
print(f"Value:{value}\n")
>>>
Key:color
Value:绿色
Key:price
Value:5
Key:discount
Value:9
6.3.2 遍历字典中的所有键
使用 for 循环和方法 keys() 遍历字典中所有键:
item_0 = {
'color': "绿色",
'price': 5,
'discount': 9
}
for key in item_0.keys():
print(key)
>>>
color
price
discount
遍历字典时,默认会遍历所有的键,以下代码与之前的代码执行结果是一样的:
item_0 = {
'color': "绿色",
'price': 5,
'discount': 9
}
for key in item_0:
print(key)
>>>
color
price
discount
在循环中,我们可以输出指定键和与之关联的值:
item_0 = {
'color': "绿色",
'price': 5,
'discount': 9
}
item = ['color', 'discount']
for key in item_0.keys():
if key in item:
value = item_0[key]
print(f"{key}:{value}。")
else:
print(key)
>>>
color:绿色。
price
discount:9。
6.3.3 按特定顺序遍历字典中的所有键
可使用函数 sorted()
来获得按特定顺序排列的键列表的副本:
item_0 = {
'color': "绿色",
'price': 5,
'discount': 9
}
for key in sorted(item_0.keys()):
print(key)
>>>
color
discount
price
6.3.4 遍历字典中的所有值
color = {
'color_1': "绿色",
'color_2': "红色",
'color_3': "橙色",
'color_4': "红色"
}
for value in color.values():
print(value)
>>>
绿色
红色
橙色
红色
提取字典中所有值的时候,我们可以使用集合 set()
来剔除重复项:
color = {
'color_1': "绿色",
'color_2': "红色",
'color_3': "橙色",
'color_4': "红色"
}
for value in set(color.values()):
print(value)
>>>
绿色
橙色
红色
注意:可使用一对花括号直接创建集合,集合中每个元素都是独一无二的:
color = {'绿色', '红色', '绿色'}
print(color)
>>>
{'绿色', '红色'}
6.4 嵌套
6.4.1 字典列表
一个字典中只能包含一个商品信息,为了可以管理多个商品信息,我们可以创建商品列表,其中每一个商品都是一个字典:
item_0 = {'color': "绿色", 'price': 8, 'discount': 9}
item_1 = {'color': "红色", 'price': 10, 'discount': 7}
item_2 = {'color': "橙色", 'price': 6, 'discount': 8}
items = [item_0, item_1, item_2]
for item in items:
print(item)
>>>
{'color': '绿色', 'price': 8, 'discount': 9}
{'color': '红色', 'price': 10, 'discount': 7}
{'color': '橙色', 'price': 6, 'discount': 8}
6.4.2 在字典中存储列表
有时候,需要在列表存储在字典中,如一个顾客购买了哪些商品:
order_0 = {
'id': '1001',
list: ["苹果", "雪梨", "橙"]
}
print(f"顾客ID:{order_0['id']}\n商品列表:")
for item in order_0[list]:
print(f"\t{item}")
>>>
顾客ID:1001
商品列表:
苹果
雪梨
橙
我们也可以使用以下代码来输出每个顾客所购买的商品:
order = {
'1001': ["苹果", "雪梨", "橙子"],
'1002': ["葡萄", "西瓜"],
'1003': ["哈密瓜", "苹果", "橙子"],
}
for order_id, order_item in order.items():
print(f"\n订单ID:{order_id}\n商品列表:")
for item in order_item:
print(f"\t{item}")
>>>
订单ID:1001
商品列表:
苹果
雪梨
橙子
订单ID:1002
商品列表:
葡萄
西瓜
订单ID:1003
商品列表:
哈密瓜
苹果
橙子
6.4.3 在字典中存储字典
如网站中存在多个用户属性:
users = {
'AA': {
'first_name': 'aa',
'last_name': 'cd',
'age': 20
},
'BB': {
'first_name': 'bb',
'last_name': 'ef',
'age': 22
}
}
for user_name, user_info in users.items():
print(f"User_name:{user_name}")
full_name = f"{user_info['first_name']}{user_info['last_name']}"
print(f"\tFull_name:{full_name.title()}")
print(f"\tage:{user_info['age']}\n")
>>>
User_name:AA
Full_name:Aacd
age:20
User_name:BB
Full_name:Bbef
age:22