sorting list of nested dictionaries in python

dictionary, python, sorting

Solution

Use the `key` keyword to the `sorted()` function and `sort()` method:

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

Demo:

>>> 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}}]

This assumes that all top-level dictionaries have a `key` key, which is assumed to be a dictionary with a `subkey` key.

See the Python Sorting HOWTO for more details and tricks.

Problem

I have something like ``` [ { "key": { "subkey1":1, "subkey2":"a" } }, { "key": { "subkey1":10, "subkey2":"b" } }, { "key": { "subkey1":5, "subkey2":"c" } } ] ``` And would need to have : ``` [ { "key": { "subkey1":10, "subkey2":"b" } }, { "key": { "subkey1":5, "subkey2":"c" } }, { "key": { "subkey1":1, "subkey2":"a" } } ] ``` Many thanks! EDIT : I'd like to sort by subkey1, this wasn't clear previously.

Original source