【发布时间】:2017-11-04 11:14:07
【问题描述】:
当我通过tabulate 运行它时,我需要按照这个确切的顺序(访客团队、访客评级、主队、主场评级、预期获胜者、保证金)打印出这段代码。
final_dict = {'Visitor Team': visitor_team, 'Visitor Rating': visitor_rating, 'Home Team': home_team,
'Home Rating': home_rating, 'Expected Winner': expected_winner, 'Margin': expected_winner_diff}
print(tabulate(final_dict, headers="keys", floatfmt=".2f", tablefmt="fancy_grid"))
我一直在学习和使用 Python 3.6,但我不知道的是,现在订购了 3.6 中的 dicts,所以这实际上按我的意图打印出来。我猜 Python 3.6 正好给了我我需要的东西,这只是运气不好!
但是我在另一台计算机上安装了 Python 3.5,但并没有像我想要的那样打印出来。我一直在阅读有关orderdicts 的信息,但我不确定如何使用它。我是否需要先将 final_dict 声明为空,然后按我需要的键顺序对其进行迭代?
【问题讨论】:
-
字典不按顺序存储键。如果你想保持顺序,你应该使用一个列表。
-
您没有提供函数
tabulate,但这就是打印完成的地方。这里的重要问题是,tabulate如何通过final_dict的元素递增?它如何使用headers的值来控制打印顺序?它如何知道字典的哪个元素匹配哪个标题?我认为您应该查看tabulate以了解它是如何工作的。否则无法保证更改为 OrderedDict 会解决您的问题。 -
@PaulCornelius 这些都是好点。
tabulate是一个用于打印表格输出的包:pypi.python.org/pypi/tabulate 我没有写它,所以我不确定它的“内部”是如何工作的。 -
文档pypi.python.org/pypi/tabulate 说制表的第一个参数可以是列表的列表。这似乎是控制列顺序的唯一可靠方法。由于这对您很重要,因此我会将您的数据转换为列表列表,然后再将其传递给列表。
标签: python python-3.x dictionary python-3.5 python-3.6