如何在保持顺序的情况下将元组转换为字典

0 投票
1 回答
676 浏览
提问于 2025-04-19 03:39

我有一个字典,并且我已经根据字典里的值进行了排序。下面是带有示例数据的代码:

mydict = {'b':4, 'a':1, 'd':8, 'c':10}

现在,我想按照值的降序来排序,所以我用了以下代码:

sorted_dict = sorted(mydict.iteritems(), key = operator.itemgetter(1), reverse = True)

当我打印出sorted_dict时,我得到了一个元组的列表:

sorted_dict
[('c', 10), ('d', 8), ('b', 4), ('a', 1)]

但是,我希望它以字典的形式呈现。所以我用了以下代码:

dict(sorted_dict)

然后得到了以下结果:

{'a': 1, 'c': 10, 'b': 4, 'd': 8}

看起来dict()方法会自动根据键来排序字典。不过,我想要的输出是:

{'c':10, 'd':8, 'b':4, 'a':1}

我该如何得到这个输出呢?

有人能帮忙吗?

1 个回答

4

普通的 dict 是不按顺序存储数据的,所以你不能用它来保持顺序。不过,collections.OrderedDict 就可以做到这一点!

>>> from collections import OrderedDict
>>> d = OrderedDict([('c', 10), ('d', 8), ('b', 4), ('a', 1)])
>>> d
OrderedDict([('c', 10), ('d', 8), ('b', 4), ('a', 1)])

虽然输出的结果看起来不太好理解,但其实是正确的。你可以通过键来访问数据,并且可以按顺序遍历这些键值对。

撰写回答