13

我有类似的东西

[
    {
        "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 排序,这以前不清楚。

4

3 回答 3

17

对函数方法使用key关键字:sorted()sort()

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

于 2012-11-05T18:19:23.880 回答
2

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

sorted(yourdata, key=lambda d: d.get('key', {}).get('subkey'), reverse=True)
于 2012-11-05T18:20:27.173 回答
-1
sorted(yourdata, reverse=True)
于 2012-11-05T18:17:53.050 回答