0
点赞
收藏
分享

微信扫一扫

【笔记】python的嵌套:字典列表、在字典中存储列表、在字典中存储字典

岛上码农 2022-02-22 阅读 155

文章目录

一、python的嵌套

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

二、字典列表

还记得我们之前的外星人的例子吗,如果字典alien_0包含一个外星人的各种信息,那么当有很多个外星人的时候,我们该如何管理呢?一种办法是创建一个外星人列表,其中每个外星人都是一个字典,包含有关该外星人的各种信息。
:创建一个包含三个外星人的列表,并遍历这个列表。

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)

输出结果:
在这里插入图片描述
更符合现实的情景是,外星人不止三个。且每个外星人都是使用代码自动生成的。
:使用range()生成了30个外星人。

#创建一个用于存储外星人的空列表
aliens=[]

#创建30个绿色的外星人
for alien_number in range(30):
    new_alien={'color':'green','points':5,'speed':'slow'}
    aliens.append(new_alien)

#显示前5个外星人
for alien in aliens[:5]:
    print(alien)
print("...")

#显示创建了多少个外星人
print(f"Total numbers of aliens:{len(aliens)}")

输出结果
在这里插入图片描述
随着游戏的进行,有些外星人会变色且加快移动速度。必要时,可使用for循环和if语句来修改某些外星人的颜色。
:要将前三个外星人修改为黄色、速度为中等且值10分。

#创建一个用于存储外星人的空列表
aliens=[]

#创建30个绿色的外星人
for alien_number in range(30):
    new_alien={'color':'green','points':5,'speed':'slow'}
    aliens.append(new_alien)

for alien in aliens[:3]:
    if alien['color']=='green':
        alien['color']='yellow'
        alien['speed']='medium'
        alien['points']=10

#显示前5个外星人
for alien in aliens[:5]:
    print(alien)
print("...")

输出结果
在这里插入图片描述

三、在字典中存储列表

有时候,需要将列表存储在字典中,而不是将字典存储在列表中。
比如说我们之前那个披萨店的例子,我们之前在学习列表时,用列表只能存储要添加的比萨配料;现在我们如果用字典的话,就不仅可在其中包含配料列表,还可包含其他有关披萨的描述。

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

#存储所点比萨的信息
pizza={
    'crust':'thick',
    'toppings':['mushroom','extra cheese'],
}

#概述所点的比萨
print(f"You order a {pizza['crust']}-crust pizza" 
      "with the following toppings:")

for topping in pizza['toppings']:
    print("\t" + topping)

输出结果:
在这里插入图片描述
当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表。下面我们再做一个例子

:调查人们喜欢的编程语言,如果调查者有多种喜欢的语言,就需要将回答放在列表中,接下来我们创建一个这样的嵌套(字典中嵌套列表)

favorite_languages = {
    'jen':['python','ruby'],
    'sarah':['c'],
    'edward':['ruby','go'],
    'phil':['python','haskell'],
}

for name,languages in favorite_languages.items():
    print(f"\n{name.title()}'s favorite languages are:")
    for language in languages:
        print(f"\t{language.title()}")

输出结果:
在这里插入图片描述

五、在字典中存储字典

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

:下面的程序,存储了每位用户的三项信息:名、姓和居住地。为了访问这些信息,我们遍历所有的用户名,并访问与每个用户名相关联的字典。

users={
    'aeinstein':{
        'first':'albert',
        'last':'einstein',
        'location':'princeton',
    },

    'mcurie':{
        'first':'marie',
        'last':'curie',
        'location':'paris',
    },

}

for username,user_info in users.items():
    print(f"\nUsername:{username}")
    full_name=f"{user_info['first']} {user_info['last']}"
    location=user_info['location']

    print(f"\tFull name:{full_name.title()}")
    print(f"\tLocation :{location.title()}")

输出结果
在这里插入图片描述

举报

相关推荐

0 条评论