按子键值

时间:2016-07-23 07:37:31

标签: python python-2.7 dictionary

我有以下词典列表:

test_list = [
        {'sr_no': 1, 'recipe_type': 'Main Dish', 'name': 'Salmon & Brown Rice'}, 
        {'sr_no': 2, 'recipe_type': 'Side Dish', 'name': 'Cupcakes'}, 
        {'sr_no': 3, 'recipe_type': 'Main Dish', 'name': 'Whole chicken'}, 
        {'sr_no': 4, 'recipe_type': 'Desserts', 'name': 'test'}
    ]

我需要按字母顺序在name索引值的基础上对其进行排序。如下:

test_list = [
        {'sr_no': 2, 'recipe_type': 'Side Dish', 'name': 'Cupcakes'}, 
        {'sr_no': 1, 'recipe_type': 'Main Dish', 'name': 'Salmon & Brown Rice'}, 
        {'sr_no': 4, 'recipe_type': 'Desserts', 'name': 'test'}
        {'sr_no': 3, 'recipe_type': 'Main Dish', 'name': 'Whole chicken'}, 
    ]

我在SO和google上搜索了这个,但没有找到明确的答案。

1 个答案:

答案 0 :(得分:2)

您可以将key从每个字典返回name的函数传递给sorted

>>> import pprint
>>> test_list = [
...         {'sr_no': 1, 'recipe_type': 'Main Dish', 'name': 'Salmon & Brown Rice'},
...         {'sr_no': 2, 'recipe_type': 'Side Dish', 'name': 'Cupcakes'},
...         {'sr_no': 3, 'recipe_type': 'Main Dish', 'name': 'Whole chicken'},
...         {'sr_no': 4, 'recipe_type': 'Desserts', 'name': 'test'}
...     ]
>>> pprint.pprint(sorted(test_list, key=lambda x: x['name'].lower()))
[{'name': 'Cupcakes', 'recipe_type': 'Side Dish', 'sr_no': 2},
 {'name': 'Salmon & Brown Rice', 'recipe_type': 'Main Dish', 'sr_no': 1},
 {'name': 'test', 'recipe_type': 'Desserts', 'sr_no': 4},
 {'name': 'Whole chicken', 'recipe_type': 'Main Dish', 'sr_no': 3}]