排序python中嵌套字典的列表

时间:2012-11-05 18:15:21

标签: python sorting dictionary

我有类似

的东西
[
    {
        "key": { "subkey1":1, "subkey2":"a"  }
    },
    {
        "key": { "subkey1":10, "subkey2":"b" }
    },
    {
        "key": { "subkey1":5, "subkey2":"c" }
    }
]

并且需要:

[
    {
        "key": { "subkey1":10, "subkey2":"b" }
    },
    {
        "key": { "subkey1":5, "subkey2":"c" }
    },
    {
        "key": { "subkey1":1, "subkey2":"a" }
    }
]

非常感谢!

编辑:我想按subkey1排序,之前不清楚。

3 个答案:

答案 0 :(得分:13)

key关键字用于sorted() functionsort() method

yourdata.sort(key=lambda e: e['key']['subkey'], reverse=True)

演示:

>>> yourdata = [{'key': {'subkey': 1}}, {'key': {'subkey': 10}}, {'key': {'subkey': 5}}]
>>> yourdata.sort(key=lambda e: e['key']['subkey'], reverse=True)
>>> yourdata
[{'key': {'subkey': 10}}, {'key': {'subkey': 5}}, {'key': {'subkey': 1}}]

这假设所有顶级词典都有一个key键,假定它是一个带有subkey键的词典。

有关详细信息和技巧,请参阅Python Sorting HOWTO

答案 1 :(得分:1)

假设您要为列表中的每个字典d['key']['subkey']d的值排序,请使用:

sorted(yourdata, key=lambda d: d.get('key', {}).get('subkey'), reverse=True)

答案 2 :(得分:0)

sorted(yourdata, reverse=True)