栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

Python
3.6中的字典是有序的,但是该功能被视为您不应该依赖的实现细节(在某些特殊情况下,如除外

**kwargs
)。如果确实需要特定的订单,则应
collections.OrderedDict
改用。您可以使用
key,value
所需顺序的元组列表构造一个:

from collections import OrderedDictfinaldict = 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),  ])

一个

OrderedDict
工程就像一个正常的
dict
在很多方面比具有不同的,其他的
repr
和一些额外的方法。您可以在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
我的系统上没有该库,因此我并未实际测试过该代码。但是它至少应该可以正常工作了。)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/653026.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号