字典与列表嵌套-python基础篇八

  有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套嵌 。你可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。

  1、字典列表。

  例如:字典alien_0 包含一个外星人的各种信息,但无法存储第二个外星人的信息,更别说屏幕上全部外星人的信息了。如何管理成群结队的外星人呢?一种办法是创建一个外星人列 表,其中每个外星人都是一个字典,包含有关该外星人的各种信息。

 

复制代码
# 创建一个用于存储外星人的空列表
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
'''
复制代码

  如果有些外星人会变色且移动速度会加快。必要时,我们可以使用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("...")   
'''
{'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
复制代码

  2、在字典中存储列表

  列表存储的数据是同一类型,字典没有类型的限制。例如:你如何描述顾客点的比萨呢?如果使用列表,只能存储要添加的比萨配料;但如果使用字典,就不仅可在其中包含配料列表,还可包含其他有关比萨的描述。

  在下面的示例中,存储了比萨的两方面信息:外皮类型和配料列表。其中的配料列表是一个与键'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
'''
复制代码

  更复杂一点的例子,字典里面的每一个键值都是列表。

复制代码
favorite_languages ={
    'jen': ['python','ruby'],
   'sarah': ['c'], 'edward': ['ruby', 'go'], 'phil': ['python', 'haskell'], } for name, languages in favorite_languages.items(): print("\n" + name.title() + "'s favorite languages are:") for language in languages: print("\t" + language.title()) ''' Jen's favorite languages are: Python Ruby Sarah's favorite languages are: C Phil's favorite languages are: Python Haskell Edward's favorite languages are: Ruby Go '''
复制代码

   3、在字典中存储字典

  可在字典中嵌套字典,但这样做时,代码可能很快复杂起来。例如,如果有多个网站用户,每个都有独特的用户名,可在字典中将用户名作为键,然后将每位用户的信息存储在一个字典中,并将该字典作为与用户名相关联的值。

复制代码
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
'''
复制代码

 

posted @ 2021-09-07 17:21  逍遥abin  阅读(541)  评论(0编辑  收藏  举报