python - 如何使用排序的键列表对 OrderedDict 进行排序?

标签 python sorting

假设我有一个 collections.OrderedDict 对象和一个重新排列的键列表:

ordereddict = collections.OrderedDict((
    ('key_78', 'value'),
    ('key_40', 'value'),
    ('key_96', 'value'),
    ('key_53', 'value'),
    ('key_04', 'value'),
    ('key_89', 'value'),
    ('key_52', 'value'),
    ('key_86', 'value'),
    ('key_16', 'value'),
    ('key_63', 'value'),
))

# Example only; actual list will **not** == sorted(ordereddict)
key_list = ['key_04', 'key_16', 'key_40', 'key_52', 'key_53', 'key_63', 'key_78', 'key_86', 'key_89', 'key_96']

如何对 OrderedDict 进行排序,使其与 key_list 的排序方式相同?

最佳答案

只需创建一个新的 OrderedDict:

newdct = OrderedDict((key, olddct[key]) for key in sortedlist)

如果您真的需要就地发生这种情况,您可以清除旧的 dct 并用新的更新它:

olddct.clear()
olddct.update(newdct)

关于python - 如何使用排序的键列表对 OrderedDict 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23587174/

相关文章:

Python - 根据索引对数字列表进行排序

windows - 为什么 sort 命令在法语语言环境中对 "œ"和 "oe"进行无差别排序?

python - 如何将模型操作传递给 Tkinter MVC 中的查看按钮?

python - Google Colab : loading large image dataset is very long, 上的深度学习如何加速这个过程?

python - 如何将 POST 数据流式传输到 Python 请求中?

c++ - 给定一个区间 vector ,输出区间内重叠次数最多的任意一个数

c# - 多维数组列排序

javascript - 嵌套for循环javascript的奇怪结果

python - '::hypot' 尚未声明

python - 如何使处理程序自动对所有路由参数进行 .decode ('utf-8' )?