python - 使用列表类型的值(按列表值的顺序)从字典创建 OrderedDict

标签 python algorithm

用文字来解释有点困难,所以我举个例子:

我有什么(数据是一个dict实例):

data = {'a':[4,5,3], 'b':[1,0,2], 'c':[6,7,8]}

我需要的(ordered_data 是一个 OrderedDict 实例):

ordered_data = {'b':[0,1,2], 'a':[3,4,5], 'b':[6,7,8]}

键的顺序应该根据嵌套列表中的项目顺序进行更改

最佳答案

tmp = {k:sorted(v) for k,v in data.items()}
ordered_data = OrderedDict((k,v) for k,v in sorted(tmp.items(), key=lambda i: i[1]))

首先对值进行排序。如果不需要原始的data,原地做也可以,不过我做了一个临时变量。

key 是一个返回要排序的键的函数。在这种情况下,键是项目元组(列表)的第二个元素,并且由于列表是可比较的,所以这就足够了。

关于python - 使用列表类型的值(按列表值的顺序)从字典创建 OrderedDict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35321296/

相关文章:

python - PyQt 中的 StandardContextMenu 国际化

python - 使用 Python 加载 CloudFormation YAML

python - 使用python在mac中获取文件的 "get info"属性

python - 无法使用通用模数攻击解码 RSA 消息?

c++ - 有效地删除所有重复记录

java - 打印语句在这两种方法中究竟是如何工作的?

python - 在字符串上使用 int() 函数后如何返回小数?

algorithm - 了解合并排序和快速排序的运行时间

java - 如何使用prims算法找到最大生成树?

c - 所有旅行时间的最小总和