一个简单的示例:
# 一个简单的食物价格清单
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 is ¥1
Onion, Pirce is ¥2.2
Watermelon, Pirce is ¥1.1
Jack's favorite foods are:
Beef, Pirce is ¥10.5
Apple, Pirce is ¥1.2
Chicken, Pirce is ¥3.3
Lili's favorite foods are:
Tomato, Pirce is ¥1
Potato, Pirce is ¥0.8
Onion, Pirce is ¥2.2
Apple, Pirce is ¥1.2
祝小红的生意越做越红火!
目录
上一章 Python Learning-条件控制语句
下一章 Python Learning-while循环