有时候,需要将列表存储在字典中,而不是将字典存储在列表中。例如,你如何描述顾客点的比萨呢?如果使用列表,只能存储要添加的比萨配料;但如果使用字典,就不仅可在其中包含在下面的示例配料列表,还可包含其他有关比萨的描述
在下面的示例中,存储了比萨的两方面信息:外皮类型和配料列表。配料列表是一个与键'toppings’相关联的值。要访问该列表,我们使用字典名和键'toppings”,就像访问字典中的其他值一样。这将返回一个配料列表,而不是单个值;
#存储所点比萨的信息。 pizza ={ 'crust': ' thick', 'toppings': [' mushrooms', 'extra cheese' ], #概述所点的比萨。 print(f"You ordered a {pizza[' crust' ]}-crust piza" with the following toppings:") for topping in pizza[ ' toppings']: print("t" + topping)
首先创建一个字典,其中存储了有关顾客所点比萨的信息。在这个字典中,一个键是'crust',与之相关联的值是字符串'thick';下一一个键是toppings' ,与之相关联的值是一个列表,其中存储了顾客要求添加的所有配料。制作前,我们概述了顾客所点的比萨。如果函数调用print()中的字符串很长,可以在合适的位置分行。只需要在每行末尾都加上引号,同时对于除第一行外的其他各行,都在行首加上引号并缩进。这样,Python 将自动合并圆括号内的所有字符串。为打印配料,编写一个for循环。为访问配料列表,使用键toppings',这样Python将从字典中提取配料列表。
下面的输出概述了要制作的比萨:
You ordered a thick-crust pizza with the following toppings:
mushrooms
extra cheese
每当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表。 在本前前面有关喜欢的编程语的示例中,如果将每个人的回答都存储在一个列表中,被调查者可选形多种,存次的器青。在这种情说下 当我们遍历字典时,与每个被调在者相关联的都是个语言列表,而不是是一种语育:因此,在遍历该字典的for循环中,我们需要再使用一 个for循环来遍历调查者相关联的语言列表:
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()}")
现在与每个名字相关联的值都是一个列表。请注意,有些人喜欢的只有一种,而有些人有多种。遍历字典时,使用变量languages来依次存储对字典中每人的引用,因为我们知道这些值都是列表。在遍历字典的主循环中,使用了另一个for循环来遍历每个人喜欢的语言列表。现在,每个人想列出多少种喜欢的语言都可以:
Jen's favorite languages are:
Python
Ruby
Sarah's favorite languages are:
Edward's favorite languges are:
Ruby
G
Phil's favorite languges are:
Python
Haskell
为进步改进这个程序,可在遍历字典的 for 循环开头添加一条 if 语句,通过查看len(languges)的值来确定当前的被调查者喜欢的语言是否有多种。如果他喜欢的语言有很多种,就像以前一样的显示输出;如果只有一种,就相应的修改输出的措辞。
注意:列表和字典的嵌套层级不应该太多,如果嵌套层级比前面的示例多得多,很可能有更简单的解决方案。
晚安晚安,明天考试
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)