嵌套字典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'对象是不可逆的