0

Python sort dictionary. I want to sort the below dictionary using name key.

I try this but not working.

{k: v for k, v in sorted(mydict.items(), key=lambda item: item[1])}

Sample dictionary

[
        {
            'id': 34, 
            'pid': 7, 
            'name': '1.1. Data Foo', 
            'open': 'open',
            'children' : [
                {
                    'id': 23,
                    'pid': 89,
                    'name': '1.1.1. Data 4',
                    'open': 'open'
                },
                {
                    'id': 23,
                    'pid': 89,
                    'name': '1.1.4. Data 6',
                    'open': 'open'
                },
                {
                    'id': 23,
                    'pid': 89,
                    'name': '1.1.2. Data 14',
                    'open': 'open'
                },
            ]
        }, 
        {
            'id': 32, 
            'pid': 7, 
            'name': '1.3. Data Bar',
            'open': 'open',
            'children' : [
                {
                    'id': 23,
                    'pid': 89,
                    'name': '1.2.1. Data 14',
                    'open': 'open'
                },
                {
                    'id': 23,
                    'pid': 89,
                    'name': '1.4.4. Data 86',
                    'open': 'open'
                },
                {
                    'id': 23,
                    'pid': 89,
                    'name': '1.0.2. Data 114',
                    'open': 'open'
                },
            ]
        }, 
        {
            'id': 33, 
            'pid': 7, 
            'name': '1.2. Data Rex'
             'open': 'open',
            'children' : [
                {
                    'id': 23,
                    'pid': 89,
                    'name': '2.1.1. Data 4o0',
                    'open': 'open'
                },
                {
                    'id': 23,
                    'pid': 89,
                    'name': '14.1.4. Data 676',
                    'open': 'open'
                },
                {
                    'id': 23,
                    'pid': 89,
                    'name': '1.11.2. Data 1423',
                    'open': 'open'
                },
            ]
        },
    ]
rahul.m
  • 5,572
  • 3
  • 23
  • 50

1 Answers1

1

Assuming that you want to sort by the name in the first level of each item in the list, the following one-liner will sort it.

a_list.sort(key=lambda x: x['name'])
Srikant
  • 294
  • 1
  • 2
  • 3