按子键值对dicts列表进行排序



我有以下字典列表:

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和谷歌上搜索过这个,但没有找到确切的答案。

您可以将key函数传递给sorted:,该函数从每个dict返回name

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

最新更新