python - 有没有更好的方法来打印这些键值对?

标签 python python-3.x

这是我在《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/

相关文章:

python - 尝试使用python读取s3内容中按时间排序的所有文件

python - 狮身人面像 : how to cross-reference a target generated by a custom directive

python - 在 python 3 中使用 python 2 架子

python - 如何使用 python 创建 csv 文件直接到 ftp 服务器?

python - 我可以在我的win10机器上同时安装python 2.7和3.5吗?

python - 如何使用Python 3.3.2在Windows XP上运行wxPython 2.9.4?

python - 在 numpy 2-dim 数组中堆叠列以获得 1-dim 数组

python - 如何返回和传递数组?

python - 如何合并两个视频?

python - 在 Jinja2 模板中将项目均匀地分成列