从元组列表转换后丢失python字典中的排序顺序

Mhe*_*yan 0 python sorting dictionary

所以我有一个需要按值排序的字典。我使用以下 Python3 函数对它们进行排序,该函数将排序后的数据作为元组列表返回。

def sorter(data):
    return  sorted(data.items(), key=lambda kv: kv[1], reverse=True)
Run Code Online (Sandbox Code Playgroud)

它完美地对数据进行排序,但是当我将此列表转换回字典时

dict(sorter(data))
Run Code Online (Sandbox Code Playgroud)

它会丢失顺序并以完全随机的顺序返回字典。我在这里缺少什么?

Tho*_*mas 5

Python 中的字典被实现为哈希表,它们本质上是无序的——或者更确切地说,它们是任意排序的,并且可以在任何修改时改变它们的顺序。

在 Python 3.7发生了变化,其中字典保持其插入顺序。但是依赖这个会让你的代码不那么便携。

OrderedDict如果要保持所有 Python 版本的顺序,请使用:

from collections import OrderedDict
OrderedDict(sorter(data))
Run Code Online (Sandbox Code Playgroud)