第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

results matching ""

    No results matching ""

    results matching ""

      No results matching ""