Python 3.6 中的字典是有序的,但该功能被认为是您不应该依赖的实现细节(除了一些特定情况,例如**kwargs
)。如果您确实需要特定订单,则应该使用collections.OrderedDict
反而。您可以使用以下列表构建一个key, value
按所需顺序排列的元组:
from collections import OrderedDict
finaldict = OrderedDict([('Visitor Team', visitor_team),
('Visitor Rating', visitor_rating),
('Home Team', home_team),
('Home Rating', home_rating),
('Expected Winner', expected_winner),
('Margin', expected_winner_diff),
])
An OrderedDict
像平常一样工作dict
在大多数方面,除了具有不同的repr
以及一些额外的方法。您可以阅读更多相关信息the docs.
在 Python 3.6+ 中,如果您的键字符串是有效的标识符(例如OrderedDict(Margin=expected_winner_diff)
)。与普通的排序不同dict
s,保证保留关键字的顺序(不是实现细节)。但这不是向后兼容的(并且无论如何都不适用于您的非标识符键)。
但可能值得考虑的是,如果您需要非常具体的数据顺序,则字典可能不是用于存储数据的最佳类型。我看到tabulate
您正在使用的函数来自库,并且根据文档,它接受许多不同格式的数据。我可能只是向它传递一个列数据列表,并分别给它标题:
data = [visitor_team, visitor_rating, home_team,
home_rating, expected_winner, expected_winner_diff]
headers = ["Visitor Team", "Visitor Rating", "Home Team",
"Home Rating", "Expected Winner", "Margin"]
print(tabulate(data, headers=headers, floatfmt=".2f", tablefmt="fancy_grid"))
(注意,我实际上没有测试过该代码,因为我没有tabulate
我的系统上的库。但它至少应该接近工作。)