我有两层字典,想要一个简单的命令或函数(如果可能的话)来颠倒字典的顺序,但只颠倒外层,而不颠倒内层。例如,如果我的字典如下:
{'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()}
之类的方法,但是我都没有成功。
感谢您的任何帮助!
反转项目:
>>> dict(reversed(d.items()))
{'dictC': {'value_3', 'key_3'}, 'dictB': {'key_2': 'value_2'}, 'dictA': {'key_1': 'value_1'}}
以下代码可以解决问题:
dict(reversed(current_dct.items()))
如果您使用的是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'})])
OrderedDict
是dict
的子类,因此它像普通字典一样工作。
但是,如果您使用的是较新版本的Python,则将保持字典插入顺序:
>>> dict(sorted(d.items(), reverse=True))
{'dictC': {'value_3', 'key_3'}, 'dictB': {'key_2': 'value_2'}, 'dictA': {'key_1': 'value_1'}}
如果您使用的是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'})])
OrderedDict
是dict
的子类,因此它像普通字典一样工作。
但是,如果您使用的是较新版本的Python,则将保持字典插入顺序:
>>> dict(sorted(d.items(), reverse=True))
{'dictC': {'value_3', 'key_3'}, 'dictB': {'key_2': 'value_2'}, 'dictA': {'key_1': 'value_1'}}