嵌套字典Python的反向顺序

问题描述 投票:1回答:4

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

{'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'}}

我将如何做?我已经尝试过invertdict()和inv_map = {v: k for k, v in my_map.items()}之类的方法,但是我都没有成功。

感谢您的任何帮助!

python dictionary reverse
4个回答
1
投票

反转项目:

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

0
投票

以下代码可以解决问题:

dict(reversed(current_dct.items()))


0
投票

如果您使用的是Python 3.6或更低版本,则不维护或保证字典顺序。您可以使用collections.OrderedDict并按相反的顺序对字典项进行排序:

>>> from collections import OrderedDict
>>> {'dictA': {'key_1': 'value_1'}, 'dictB': {'key_2': 'value_2'}, 'dictC': {'key_3', 'value_3'}}
>>> OrderedDict(sorted(d.items(), reverse=True))
OrderedDict([('dictC', {'value_3', 'key_3'}), ('dictB', {'key_2': 'value_2'}), ('dictA', {'key_1': 'value_1'})])

OrderedDictdict的子类,因此它像普通字典一样工作。

但是,如果您使用的是较新版本的Python,则将保持字典插入顺序:

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

0
投票

如果您使用的是Python 3.6或更低版本,则不维护或保证字典顺序。您可以使用collections.OrderedDict并按相反的顺序对字典项进行排序:

>>> from collections import OrderedDict
>>> {'dictA': {'key_1': 'value_1'}, 'dictB': {'key_2': 'value_2'}, 'dictC': {'key_3', 'value_3'}}
>>> OrderedDict(sorted(d.items(), reverse=True))
OrderedDict([('dictC', {'value_3', 'key_3'}), ('dictB', {'key_2': 'value_2'}), ('dictA', {'key_1': 'value_1'})])

OrderedDictdict的子类,因此它像普通字典一样工作。

但是,如果您使用的是较新版本的Python,则将保持字典插入顺序:

>>> dict(sorted(d.items(), reverse=True))
{'dictC': {'value_3', 'key_3'}, 'dictB': {'key_2': 'value_2'}, 'dictA': {'key_1': 'value_1'}}
© www.soinside.com 2019 - 2024. All rights reserved.