有时候,需求将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套。
17.1 字典列表
字典alien_0包括一个外星人的决心,但无法存储第二个外星人的信息,更别说屏幕上悉数外星人的信息了。如何办理成群结队的外星人呢?一种方法是创立一个外星人列表,其间每个外星人都是一个字典,包括有关该外星人的各种信息。
例如,下面的代码创立一个包括三个外星人的列表:
# -*- coding:utf-8 -*-
alien_0 = {'color':'green','score':5}
alien_1 = {'color':'yellow','score':10}
alien_2 = {'color':'red','score':15}
aliens = [alien_0,alien_1,alien_2]
for alien in aliens:
print(alien)
咱们首先创立了3个字典,其间每个字典都表明一个外星人。在处,咱们将这些字典都存储在一个名叫aliens的列表中。最终,咱们遍历这个列表,并将每个外星人都打印出来:
{'color': 'green', 'score': 5}
{'color': 'yellow', 'score': 10}
{'color': 'red', 'score': 15}
更符合现实的情形是,外星人不止三个,且每个外星人都运用代码主动生成。在下面的示例中,咱们运用range()生成30个外星人:
# -*- coding:utf-8 -*-
# 创立一个用于存储外星人的空列表
aliens = []
# 创立30个绿色的外星人
for alien_number in range (0,30):
new_alien = {'color': 'green', 'score': 5, 'speed': 'slow'}
aliens.append(new_alien)
# 显现前5个外星人
for alien in aliens[0:5]:
print(alien)
print("...")
# 显现创立了多少个外星人
print("总共有个外星人".format(len(aliens)))
在这个示例中,咱们首先创立了一个空列表,用于存储接下来讲创立的所有外星人。紧接着运用了range()回来一系列数字,其仅有用途是让Python重复多少次循环,没执行一次循环,都将创立一个外星人,并将其添加到列表aliens的末尾。最终运用一个切片来打印前5个外星人,并打印列表的长度,以证明确实创立了30个外星人:
{'color': 'green', 'score': 5, 'speed': 'slow'}
{'color': 'green', 'score': 5, 'speed': 'slow'}
{'color': 'green', 'score': 5, 'speed': 'slow'}
{'color': 'green', 'score': 5, 'speed': 'slow'}
{'color': 'green', 'score': 5, 'speed': 'slow'}
...
总共有30个外星人
常常需求在列表中包括大量的字典,而其间每个字典都包括特定对象的很多信息。例如,可以为网站的每个用户创立一个字典,并将这些字典存储在一个名为users的列表中。在这个列表中,所有字典的结构都相同,因而你可以遍历这个列表,并以相同的方法处理其间的每个字典。
17.2 在字典中存储列表
有时候,需求将列表存储在字典中。例如,你如何描述用户点的比萨呢?如果运用列表,只能存储要添加的比萨配料;但如果运用字典,就不仅可在其间包括配料列表,还能包括其他有关比萨的描述。
在下面的示例中,存储了比萨的两方面信息:外皮类型和配料列表。其间配料列表是一个与键'toppings'相关联的值。要拜访这个列表,咱们运用字典名和键'toppings',就像拜访字典的其他值一样。这将回来一个配料列表,而不是单个值:
# -*- coding:utf-8 -*-
# 存储顾客点的比萨的信息
pizza = {
'crust':'加大型',
'toppings':['微辣','榴莲']
}
# 概述所点的比萨
print("你点的是 " + pizza['crust'] + " 比萨,需求添加以下配料:")
for topping in pizza['toppings']:
print(topping)
下面的输出概述了顾客点的比萨:
你点的是 加大型 比萨,需求添加以下配料:
微辣
榴莲
每当需求在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表。
领取专属 10元无门槛券
私享最新 技术干货