嵌套字典Python的相反顺序

嵌套字典Python的相反顺序,python,dictionary,reverse,Python,Dictionary,Reverse,我有一个两层字典,想要一个简单的命令或函数(如果可能的话)来颠倒字典的顺序,但只在外层,而不是内层。例如,如果我的字典如下所示: {'dictA': {'key_1': 'value_1'}, 'dictB': {'key_2': 'value_2'}, 'dictC': {'key_3', 'value_3'}} 我想改成以下内容: {'dictC': {'key_3', 'value_3'}, 'dictB': {'key_2': 'value_2'}, 'dictA': {'key_1'

我有一个两层字典,想要一个简单的命令或函数(如果可能的话)来颠倒字典的顺序,但只在外层,而不是内层。例如,如果我的字典如下所示:

{'dictA': {'key_1': 'value_1'}, 'dictB': {'key_2': 'value_2'}, 'dictC': {'key_3', 'value_3'}}
我想改成以下内容:

{'dictC': {'key_3', 'value_3'}, 'dictB': {'key_2': 'value_2'}, 'dictA': {'key_1': 'value_1'}}
>>> dict(reversed(list(d.items())))
{'dictC': {'value_3', 'key_3'}, 'dictB': {'key_2': 'value_2'}, 'dictA': {'key_1': 'value_1'}}
我该怎么做?我尝试过像
invertdict()
和inv_-map=
{v:k代表k,v在我的_-map.items()}
中,但这两种方法都没有成功

感谢您的帮助

颠倒项目:

>>> dict(reversed(d.items()))
{'dictC': {'value_3', 'key_3'}, 'dictB': {'key_2': 'value_2'}, 'dictA': {'key_1': 'value_1'}}

下面的代码可以实现此目的:


dict(reversed(current\u dct.items())

如果您使用的是Python 3.6或更低版本,则无法维护或保证字典顺序。您可以使用a和apply来反转字典:

>>> from collections import OrderedDict
>>> d = {'dictA': {'key_1': 'value_1'}, 'dictB': {'key_2': 'value_2'}, 'dictC': {'key_3', 'value_3'}}
>>> OrderedDict(reversed(list(d.items())))
OrderedDict([('dictC', {'value_3', 'key_3'}), ('dictB', {'key_2': 'value_2'}), ('dictA', {'key_1': 'value_1'})])
orderedict()
dict
的一个子类,因此它的工作原理与普通词典类似

但是,如果您使用的是较新版本的Python,那么字典插入顺序将保持不变。因此,您可以执行以下操作:

{'dictC': {'key_3', 'value_3'}, 'dictB': {'key_2': 'value_2'}, 'dictA': {'key_1': 'value_1'}}
>>> dict(reversed(list(d.items())))
{'dictC': {'value_3', 'key_3'}, 'dictB': {'key_2': 'value_2'}, 'dictA': {'key_1': 'value_1'}}

注意:出于安全原因,最好将
list()
转换为
d.items
,因为Python 3.8之前的旧版本不允许反转类型
dict\u items
。您将引发一个
TypeError:“dict_items”是不可逆的
错误,否则。

实现
反向的解决方案在Python的旧版本(即3.8之前)中似乎不起作用。这个解决方案应该可以在Python3.x中使用

代码

so_dict = {'dictA': {'key_1': 'value_1'}, 'dictB': {'key_2': 'value_2'}, 'dictC': {'key_3', 'value_3'}}

{k: v for k, v in sorted(list(so_dict.items()), key=lambda x:x[0].lower(), reverse=True)}
输出

{'dictC': {'key_3', 'value_3'},
 'dictB': {'key_2': 'value_2'},
 'dictA': {'key_1': 'value_1'}}

这是Python的哪个版本?我用的是3.6。在3.6中,我不认为dictionary对象是可逆的,当我检查时,它给出了这样一个错误:
TypeError:'dict_items'对象是不可逆的