Python反向字典项目顺序

问题描述 投票:3回答:2

假设我有一本字典:

d = {3: 'three', 2: 'two', 1: 'one'}

我想重新排列这个字典的顺序,以便字典是:

d = {1: 'one', 2: 'two', 3: 'three'}

我正在考虑像列表的reverse()函数,但这不起作用。提前感谢您的回答!

python python-3.x sorting dictionary reverse
2个回答
7
投票

从CPython 3.6(作为实现细节)和Python 3.7(作为语言保证)开始,普通的dicts确实有订单。

在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(用于输入和输出)以实现期望的结果。


2
投票

标准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())))
© www.soinside.com 2019 - 2024. All rights reserved.