我有以下词典列表:
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上搜索了这个,但没有找到明确的答案。
答案 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}]