python - 根据 Python 中单独列表中键的顺序,按键对字典列表进行排序

标签 python sorting dictionary

我有一个看起来像这样的字典列表:

[
    {
        "format": "format1",
        "code": "tr"
    },
    {
        "format": "format2",
        "code": "hc"
    },
    {
        "format": "format3",
        "code": "bx"
    },
    {
        "format": "format4",
        "code": "mm"
    },
    {
        "format": "format5",
        "code": "el"
    }
]

我需要根据代码键的值对该列表进行排序,但代码的顺序由单独的列表确定:

code_order = ["mm", "hc", "el", "tr", "bx"]

所以最终的列表应该是这样的:

[
    {
        "format": "format4",
        "code": "mm"
    },
    {
        "format": "format2",
        "code": "hc"
    },
    {
        "format": "format5",
        "code": "el"
    },
    {
        "format": "format1",
        "code": "tr"
    },
    {
        "format": "format3",
        "code": "bx"
    }
]

有没有人对如何实现这一目标有任何建议?我很难弄清楚如何进行这种排序。

最佳答案

Python 2.7+:

lookup = {s: i for i, s in enumerate(code_order)}
print(sorted(l, key=lambda o: lookup[o['code']]))

年长者:

lookup = dict((s, i) for i, s in enumerate(code_order))
print sorted(l, key=lambda o: lookup[o['code']])

关于python - 根据 Python 中单独列表中键的顺序,按键对字典列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15280603/

相关文章:

swift - 在字典数组中找到最大值

c - 将数组传递给C语言中的排序函数

R: Sum Complete.cases in a column 按另一列中的值分组(或排序)

python - 用 df.where 替换迭代?

python - 如何(或是否有可能)使用列表来提取 Python 中的嵌套字典?

linux - 为什么 Linux "sort -u"比 Excel 快这么多

java - 从任何给定的日期间隔返回一周的 1 到 7 天

python - 在字典中查找符合特定条件的集合

python - 导入错误: No module named graphics

python - 在 Django admin 中显示子级内联