码迷,mamicode.com
首页 > 编程语言 > 详细

python学习5-嵌套

时间:2017-12-13 12:02:23      阅读:441      评论:0      收藏:0      [点我收藏+]

标签:tle   number   oms   ali   pre   users   if语句   红色   解决   

嵌套

字典列表:

alien_0 = {color: green, points: 5}
alien_1 = {color: yellow, points: 10}
alien_2 = {color: red, points: 15}
? aliens = [alien_0, alien_1, alien_2]
for alien in aliens:
print(alien)

  我们首先创建了三个字典,其中每个字典都表示一个外星人。在?处,我们将这些字典都放
到一个名为aliens的列表中。最后,我们遍历这个列表,并将每个外星人都打印出来:

{color: green, points: 5}
{color: yellow, points: 10}
{color: red, points: 15}

  更符合现实的情形是,外星人不止三个,且每个外星人都是使用代码自动生成的。在下面的
示例中,我们使用range()生成了30个外星人:

# 创建一个用于存储外星人的空列表
aliens = []
# 创建30个绿色的外星人
? for alien_number in range(30):
? new_alien = {color: green, points: 5, speed: slow}
? aliens.append(new_alien)
# 显示前五个外星人
? for alien in aliens[:5]:
print(alien)
print("...")
# 显示创建了多少个外星人
? print("Total number of aliens: " + str(len(aliens)))


{‘speed‘: ‘slow‘, ‘color‘: ‘green‘, ‘points‘: 5}
{‘speed‘: ‘slow‘, ‘color‘: ‘green‘, ‘points‘: 5}
{‘speed‘: ‘slow‘, ‘color‘: ‘green‘, ‘points‘: 5}
{‘speed‘: ‘slow‘, ‘color‘: ‘green‘, ‘points‘: 5}
{‘speed‘: ‘slow‘, ‘color‘: ‘green‘, ‘points‘: 5}
...
Total number of aliens: 30

这些外星人都具有相同的特征,但在Python看来,每个外星人都是独立的,这让我们能够独
立地修改每个外星人。
在什么情况下需要处理成群结队的外星人呢?想象一下,可能随着游戏的进行,有些外星人
会变色且移动速度会加快。必要时,我们可以使用for循环和if语句来修改某些外星人的颜色。
例如,要将前三个外星人修改为黄色的、速度为中等且值10个点,可以这样做:

# 创建一个用于存储外星人的空列表
aliens = []
# 创建30个绿色的外星人
for alien_number in range (0,30):

new_alien = {‘color‘: ‘green‘, ‘points‘: 5, ‘speed‘: ‘slow‘}
aliens.append(new_alien)
for alien in aliens[0:3]:
if alien[‘color‘] == ‘green‘:
alien[‘color‘] = ‘yellow‘
alien[‘speed‘] = ‘medium‘
alien[‘points‘] = 10
# 显示前五个外星人
for alien in aliens[0:5]:
print(alien)
print("...")

  鉴于我们要修改前三个外星人,需要遍历一个只包含这些外星人的切片。当前,所有外星人
都是绿色的,但情况并非总是如此,因此我们编写了一条if语句来确保只修改绿色外星人。如果
外星人是绿色的,我们就将其颜色改为‘yellow‘,将其速度改为‘medium‘,并将其点数改为10,
如下面的输出所示:

{speed: medium, color: yellow, points: 10}
{speed: medium, color: yellow, points: 10}
{speed: medium, color: yellow, points: 10}
{speed: slow, color: green, points: 5}
{speed: slow, color: green, points: 5}

  你可以进一步扩展这个循环,在其中添加一个elif代码块,将黄色外星人改为移动速度快且
值15个点的红色外星人,如下所示(这里只列出了循环,而没有列出整个程序):

for alien in aliens[0:3]:
if alien[color] == green:
alien[color] = yellow
alien[speed] = medium
alien[points] = 10
elif alien[color] == yellow:
alien[color] = red
alien[speed] = fast
alien[points] = 15

在字典中存储列表:

  在下面的示例中,存储了比萨的两方面信息:外皮类型和配料列表。其中的配料列表是一个
与键‘toppings‘相关联的值。要访问该列表,我们使用字典名和键‘toppings‘,就像访问字典中
的其他值一样。这将返回一个配料列表,而不是单个值:

# 存储所点比萨的信息
? pizza = {
crust: thick,
toppings: [mushrooms, extra cheese],
}
# 概述所点的比萨
? print("You ordered a " + pizza[crust] + "-crust pizza " +
"with the following toppings:")
? for topping in pizza[toppings]:
print("\t" + topping)



You ordered a thick-crust pizza with the following toppings:
mushrooms
extra cheese

每当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表。

注意 列表和字典的嵌套层级不应太多。如果嵌套层级比前面的示例多得多,很可能有更简单
的解决问题的方案。

在字典中存储字典:

users = {
aeinstein: {
first: albert,
last: einstein,
location: princeton,
},
mcurie: {
first: marie,
last: curie,
location: paris,
},
}
? for username, user_info in users.items():
? print("\nUsername: " + username)
? full_name = user_info[first] + " " + user_info[last]
location = user_info[location]
? print("\tFull name: " + full_name.title())
print("\tLocation: " + location.title())



Username: aeinstein
Full name: Albert Einstein
Location: Princeton
Username: mcurie Full name: Marie Curie Location: Paris

  请注意,表示每位用户的字典的结构都相同,虽然Python并没有这样的要求,但这使得嵌
套的字典处理起来更容易。倘若表示每位用户的字典都包含不同的键,for循环内部的代码将
更复杂。

 

python学习5-嵌套

标签:tle   number   oms   ali   pre   users   if语句   红色   解决   

原文地址:http://www.cnblogs.com/a255/p/8031438.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!