在Python中对包含Dictionary的列表进行排序

时间:2012-05-22 07:01:49

标签: python sorting

我的列表包含需要根据字母顺序排序的字典

[
    {
        'index': False,
        'definition': {
            'id': 1111111L,
            'value': u'Large Content'
        },
        'id': 1234567L,
        'name': {
            'id': 9999999999L,
            'value': u'INTRODUCTION'
        }
    },
    {
        'index': False,
        'definition': {
            'id': 22222222L,
            'value': u'Large Content'
        },
        'id': 2L,
        'name': {
            'id': 3333333333333l,
            'value': u'Abstract'
        }
    },
    {
        'index': False,
        'definition': {
            'id': 8888888888L,
            'value': u'Large Content'
        },
        'id': 1L,
        'name': {
            'id': 343434343434L,
            'value': u'Bulletin'
        }
    }
    {
        'index': False,
        'definition': {
            'id': 1113311L,
            'value': u'Large Content'
        },
        'id': 333434L,
        'name': {
            'id': 9999999999L,
            'value': u'<b>END</b>'
        }
    },
] 

我需要根据['name'] ['value']对结果进行排序

Abstract
Bulletin
INTRODUCTION
END

但是当我这样做时,我首先得到大写字母

bg = []
for n in a:
   bg = sorted(a, key=lambda n: n["name"]["value"])

INTRODUCTION
END
Abstract
Bulletin

2 个答案:

答案 0 :(得分:6)

要使排序大小写不敏感,请在排序键中将所有内容放在小写字母中:

bg = sorted(a, key=lambda n: n["name"]["value"].lower())

答案 1 :(得分:2)

因为资本字典缩小了。在排序之前删除字母大小写:

key=lambda n: n["name"]["value"].lower()