这是我在《Python 速成类(class)》书中第 6 章第 6 章的练习 6-9 中完成的一些代码。
favorite_places = {
'joe': {
'paris': 'france',
'hamburg': 'germany',
'cairo': 'egypt',
},
'anna': {
'tripoli': 'libya',
'tokyo': 'japan',
'moskva': 'russia',
},
'henry': {
'sydney': 'australia',
'quebec': 'canada',
'rio de janeiro': 'brazil',
}
}
for person, places in favorite_places.items():
print(person.title() + "'s favorite places are: ")
places = places.items()
for place in places:
print(place[0].title() + " in " + place[1].title() + ".")
print("\n")
那么输出是这样的:
Joe's favorite places are:
Cairo in Egypt.
Hamburg in Germany.
Paris in France.
有没有一种方法可以从地方变量中获取键值并以与我相同的方式打印它,但不将地方转换为列表?我觉得这样有点乱......
最佳答案
通过这样做
places = places.items()
在 python 3 中,您不会转换为列表,而是访问一个迭代器,它会生成键值对,因此这是最好的方法。
(python 2 中的等效项是 iteritems
,在 python 2 中 items
返回对的列表,但行为在 python 3 中已更改)
(最让我惊讶的是1)你的缩进和2)你最好直接写,而不使用数组或临时变量(直接将情侣解压在2个变量中更优雅,并使用格式
如评论中所述,更加优雅和高效)
for town,country in places.items():
print("{} in {}.".format(town.title(),country.title())
print("\n")
关于python - 有没有更好的方法来打印这些键值对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40328907/