gpt4 book ai didi

python - python 3.6 与旧版本中的字典顺序

转载 作者:太空宇宙 更新时间:2023-11-03 13:32:40 24 4
gpt4 key购买 nike

我有这段代码,当我通过 tabulate 运行它时,我需要按照这个确切的顺序(访客团队、访客评分、主队、主队评分、预期获胜者、 margin )打印出来。

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 中的字典现在已排序,所以这实际上按照我的预期打印出来。我猜 Python 3.6 正好给了我我需要的东西,真是太幸运了!

但是我去另一台计算机上安装了 Python 3.5,但它并没有像我想要的那样打印出来。我一直在阅读有关 ordereddicts 的内容,但不确定如何使用它。我是否需要先将 final_dict 声明为空,然后按我需要的键顺序迭代它?

最佳答案

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),
])

除了具有不同的 repr 和一些额外的方法之外,OrderedDict 在大多数方面都像普通的 dict 一样工作。您可以在 the docs 中阅读更多相关信息.

在 Python 3.6+ 中,如果您的键字符串是有效标识符(例如 OrderedDict(Margin=expected_winner_diff)),您还可以使用构造函数的关键字参数。与普通 dict 的顺序不同,保证保留关键字的顺序(不是实现细节)。虽然这不是向后兼容的(并且无论如何都不能用于您的非标识符键)。

但可能值得考虑的是,如果您需要对数据进行非常具体的排序,那么字典可能不是用于存储数据的最佳类型。我看到了 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 库。但它至少应该接近工作。)

关于python - python 3.6 与旧版本中的字典顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44339145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com