这是我在Python速成教程第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变量中获取键值,并像我一样打印它,而不是将位置转换为列表?我觉得像这样有点乱...
发布于 2016-10-30 20:15:55
通过这样做
places = places.items()在python3中,你不会转换成一个列表,但是你可以访问一个迭代器,这个迭代器产生键,值对,所以这是最好的方法。
(Python2的等价物是iteritems,在Python2中,items返回一个情侣列表,但在Python3中行为发生了变化)
(最让我惊讶的是1)你的缩进和2)你最好直接写,不要使用数组或temp变量(直接在2个变量中解包成对更优雅,使用注释中提到的format更优雅和高效)
for town,country in places.items():
print("{} in {}.".format(town.title(),country.title())
print("\n")发布于 2016-10-30 21:50:07
格式现在对我来说很流行,所以这里有另一种很酷的方式:
for name, places in favorite_places.items():
print("{}'s favorite places are:".format(name.capitalize()))
for city, country in places.items():
print("{} in {}.".format(city.capitalize(), country.capitalize()))
print('\n')发布于 2016-10-30 21:38:34
一种稍微短一点的方法(仍然使用list )是:
for person in favorite_places:
print("%s's favorite places are: " %person.title())
[print('%s in %s.' %(i.title(),z.title())) for i,z in favorite_places[person].items()]
print('\n')https://stackoverflow.com/questions/40328907
复制相似问题