假设我有一本字典:
d = {3: 'three', 2: 'two', 1: 'one'}
我想重新排列这个字典的顺序,以便字典是:
d = {1: 'one', 2: 'two', 3: 'three'}
我正在考虑像列表的reverse()
函数,但这不起作用。提前感谢您的回答!
从CPython 3.6(作为实现细节)和Python 3.7(作为语言保证)开始,普通的dict
s确实有订单。
在3.7及更低版本,他们没有在__reversed__
和dict
视图上支持dict
,所以你必须将项目转换为list
(或tuple
,它并不重要)并反向迭代:
d = {3: 'three', 2: 'two', 1: 'one'}
d = dict(reversed(list(d.items())))
当3.8版本发布时,项目视图将以可反复的方式进行本机迭代,因此您可以执行以下操作:
d = dict(reversed(d.items()))
根本不需要制作临时的list
。
3.6之前,you'd need collections.OrderedDict
(用于输入和输出)以实现期望的结果。
标准Python字典(在Python 3.6之前)没有订单,也不保证订单。这正是OrderedDict
创作的目的。
如果您的词典是OrderedDict
,您可以通过以下方式撤消:
import collections
mydict = collections.OrderedDict()
mydict['1'] = 'one'
mydict['2'] = 'two'
mydict['3'] = 'three'
collections.OrderedDict(reversed(list(mydict.items())))