Python Learning-字典

一个简单的示例:

# 一个简单的食物价格清单
food_prices = {'tomato':3, 'potato':2}

# 打印食物的价格
print(food_prices['tomato'])
print(food_prices['potato'])

输出:

3
2

字典中存储的对象可用是任意类型的;字典中的元素需要以键值对(key-value)的形式存储,键与值之间与冒号隔开,而多个键值对之间使用逗号进行分隔;所有的键值对都被包含在{}括号中

注意:key的值不可以重复,而value的值是可以重要的

{'tomato':3, 'potato':2}{}括号包围

'tomato':3'tomato'是key,3是值;key与value是一对相关联的值

,多个键值对使用逗号进行分隔

food_prices['tomato']通过在字典变量名后根上[]括号,并在括号中指定key,将返回key所对应的value

场景:小红开了一个蔬菜水果摊,她有一份关于蔬菜水果的价格清单;而小明想通过小红的蔬菜水果摊购买一些食材回家做饭,小明的心里有一份属于自己的采购计划单

向字典中添加键值对

刚开始,小红的蔬菜水果摊只有两种食物

# 小红蔬菜水果摊的食品-价格清单
food_prices = {'tomato':3, 'potato':2}

随着不断经营,小红的蔬菜水果摊越做越大,渐渐的达到了5种食物,她需要将新的食物添加到原来的食物-价格清单中去

# 小红蔬菜水果摊的食品-价格清单
food_prices = {'tomato':3, 'potato':2}

# 添加新的元素
food_prices['apple'] = 4
food_prices['pear'] = 2.3
food_prices['onion'] = 4.5

# 打印食物-价格清单
print(food_prices)

输出:

{‘tomato’: 3, ‘potato’: 2, ‘apple’: 4, ‘pear’: 2.3, ‘onion’: 4.5}

food_prices['apple'] = 4这条语句中在原有字典变量后通过['apple']向字典中添加一个key,然后将key对就的value设置为4,这样便向字典中添加了一对key-value

注意,字典类型的元素是无序的,与添加的时候的顺序无关,即使输出字典元素看起来与添加顺序是一致的,但计算机并不会按固定顺序显示元素

修改字典中的值

随着季节的变化与市场的变化,小红发现食物的价格也发生了变化,因此,她需要更改食物-价格清单中的价格

# 这是目前小红的食物-价格清单
food_prices = {
    'tomato': 3, 
    'potato': 2, 
    'apple': 4, 
    'pear': 2.3, 
    'onion': 4.5
}

# 小红发现苹果的价格上涨到了5元,而洋葱的价格下跌到了4元
food_prices['apple'] = 5
food_prices['onion'] = 4

# 打印修改后的食物-价格清单
print(food_prices)

输出:

{‘tomato’: 3, ‘potato’: 2, ‘apple’: 5, ‘pear’: 2.3, ‘onion’: 4}

注:如果一行代码太长,可以通过回车将一行代码分解成多行代码,易于阅读与维护

删除键值对

如果有一天,小红的蔬菜水果摊不再出售其中某个食物了,那么小红就得将其从她的食物-价格清单里删除掉

# 这是目前小红的食物-价格清单
food_prices = {
    'tomato': 3, 
    'potato': 2, 
    'apple': 5, 
    'pear': 2.3, 
    'onion': 4
}

# 小红决定不再出售梨,将其从清单中删除
del food_prices['pear']

# 打印最新清单
print(food_prices)

输出:

{‘tomato’: 3, ‘potato’: 2, ‘apple’: 5, ‘onion’: 4}

通过使用del语句,并指定要删除的字典名与key,即可将与之相对应的key-value删除掉

字典的遍历

字典中可能会有成百上千条数据,因此字典支持遍历;可以遍历字典的所有键值对、键或值

通过遍历字典中的键值对,小红可以向小明展示她的食物-价格清单

# 这是目前小红的食物-价格清单
food_prices = {
    'tomato': 3, 
    'potato': 2, 
    'apple': 5, 
    'onion': 4
}

# 遍历字典中的key-value
for key, value in food_prices.items():
    print("The price of "+
          key+
          "is ¥"+
          str(value))

输出:

The price of tomato is ¥3
The price of potato is ¥2
The price of apple is ¥5
The price of onion is ¥4

food_prices.items()返回字典的键值对列表

key, value通过申明两个变量名来接收键、值,这两个变量名称可自定义

+可将客串拼接起来,str(value)将数值转换成客串,如果不转将会报错

如果小明只也想了解清单中的食物名称,而不关注价格,这个时候可以通过遍历字典的key来提供食物名称

# 这是目前小红的食物-价格清单
food_prices = {
    'tomato': 3, 
    'potato': 2, 
    'apple': 5, 
    'onion': 4
}

# 遍历字典中的key-value
for key in food_prices.keys():
    print("Food's name "+key)

输出:

Food’s name tomato
Food’s name potato
Food’s name apple
Food’s name onion

keys()返回字典中所有的Key的列表

在对字典进行遍历的时候(在不指定key()的时候),默认访问到的元素都是key

# 这是目前小红的食物-价格清单
food_prices = {
    'tomato': 3, 
    'potato': 2, 
    'apple': 5, 
    'onion': 4
}

# 遍历字典中的key-value
for key in food_prices:
    print("Food's name "+key)

输出:

Food’s name tomato
Food’s name potato
Food’s name apple
Food’s name onion

同理,也可以单独将字典的值遍历出来

# 这是目前小红的食物-价格清单
food_prices = {
    'tomato': 3, 
    'potato': 2, 
    'apple': 5, 
    'onion': 4
}

# 遍历字典中的key-value
for value in food_prices.values():
    print("Price "+str(value))

输出:

Price 3
Price 2
Price 5
Price 4

字典的嵌套使用

字典中可以装任意的对象,因此字典中便可以装字典类型、装列表类型,当然列表中也可以装字典

小红打算将蔬菜和水果区分开来,分别列出蔬菜的价格单与水果的价格单,如下:

# 蔬菜价格清单
vegetable_prices = {
    'tomato': 3,
    'potato': 2,
    'onion': 4
    }
# 水果价格清单
fruit_prices = {
    'apple': 5
    }
# 将两个字典加入列表中
food_prices = [
    vegetable_prices, 
    fruit_prices
]

# 打印这个列表
for dic in food_prices:
    print(dic)

输出:

{‘tomato’: 3, ‘potato’: 2, ‘onion’: 4}
{‘apple’: 5}

为了扩大经营范围,小红还增加了水果数量,并且新增加了肉类食物

# 肉类价格清单
meat_prices = {
    'beef': 23, 
    'pork': 14, 
    'chicken': 19.8,
    'fish':9.7
}
# 将肉类价格清单添加到列表中
food_prices.append(meat_prices)

# 打印这个列表
for dic in food_prices:
    print(dic)

输出:

{‘tomato’: 3, ‘potato’: 2, ‘onion’: 4}
{‘apple’: 5}
{‘beef’: 23, ‘pork’: 14, ‘chicken’: 19.8, ‘fish’: 9.7}

因为小红的蔬菜水果摊,哦不,现在应该叫食品摊经营得好,已经有三个常来的顾客了,小红总结了这三个顾客所喜欢的食物清单。这里的例子是将列表存在到字典中,如下:

# 小红的头的顾客喜欢的食物清单
customer_favorite = {
    'Xiaoming':['tomato', 'onion', 'watermelon'],
    'Jack':['beef', 'apple', 'chicken'],
    'Lili':['tomato', 'potato', 'onion', 'apple']
}

# 打印
for name, foods in customer_favorite.items():
    print("\n"+name.title()+"'s favorite foods are: ")  #\n增加空行
    for food in foods:
        print("\t"+food.title())  # \t将开头缩进四个空格

输出:

Xiaoming's favorite foods are: 
    Tomato
    Onion
    Watermelon

Jack's favorite foods are: 
    Beef
    Apple
    Chicken

Lili's favorite foods are: 
    Tomato
    Potato
    Onion
    Apple

最后来看看将字典存储到字典中的例子:小红为这三位常客制作了一个只属于他们的优惠食物价格清单

# 小红的头的顾客喜欢的食物清单
customer_favorite = {
    'Xiaoming':{'tomato':1, 'onion':2.2, 'watermelon':1.1},
    'Jack':{'beef':10.5, 'apple':1.2, 'chicken':3.3},
    'Lili':{'tomato':1, 'potato':0.8, 'onion':2.2, 'apple':1.2}
}

# 打印
for name, foods in customer_favorite.items():
    print("\n"+name.title()+"'s favorite foods are: ")  #\n增加空行
    for food, price in foods.items():
        print("\t"+food.title()+", Pirce is ¥"+str(price))  # \t将开头缩进四个空格

输出:

Xiaoming's favorite foods are: 
    Tomato, Pirce is1
    Onion, Pirce is2.2
    Watermelon, Pirce is1.1

Jack's favorite foods are: 
    Beef, Pirce is10.5
    Apple, Pirce is1.2
    Chicken, Pirce is3.3

Lili's favorite foods are: 
    Tomato, Pirce is1
    Potato, Pirce is0.8
    Onion, Pirce is2.2
    Apple, Pirce is1.2

祝小红的生意越做越红火!

目录
上一章 Python Learning-条件控制语句
下一章 Python Learning-while循环

猜你喜欢

转载自blog.csdn.net/weixin_38486884/article/details/82016868
今日推荐