Python 按字典的值对列表进行排序的方法
在本文中,我们将看到如何使用值对字典列表进行排序。字典表示Python中封装在大括号中的 键-值 对。键是唯一的,并且用冒号与值分隔,逗号分隔项目。左侧冒号之前的部分是键,而右侧是其对应的值。
假设我们有以下字典列表:
[{'name': 'Sam', 'marks': 98}, {'name': 'Tom', 'marks': 93}, {'name': 'Jacob', 'marks': 97}]
输出应该是以下内容 –
Sorted =
[{'name': 'Tom', 'marks': 93}, {'name': 'Jacob', 'marks': 97}, {'name': 'Sam', 'marks': 98}]
使用lambda函数在sorted()方法中对字典列表进行排序
示例
# list of dictionaries
d = [
{"name" : "Sam", "marks" : 98},
{"name" : "Tom", "marks" : 93},
{"name" : "Jacob", "marks" : 97}
]
# Display the Dictionary
print("Dictionary = \n",d)
# Sorting using values with the lambda function
print("Sorted = \n",sorted(d, key = lambda item: item['marks']))
输出
Dictionary =
[{'name': 'Sam', 'marks': 98}, {'name': 'Tom', 'marks': 93}, {'name': 'Jacob', 'marks': 97}]
Sorted =
[{'name': 'Tom', 'marks': 93}, {'name': 'Jacob', 'marks': 97}, {'name': 'Sam', 'marks': 98}]
使用lambda函数按值对字典列表进行排序,使用sorted()方法按降序排序
示例
# List of dictionaries
d = [
{"name" : "Sam", "marks" : 98},
{"name" : "Tom", "marks" : 93},
{"name" : "Jacob", "marks" : 97}
]
# Display the Dictionary
print("Dictionary = \n",d)
# Sorting using values with the lambda function
# The reverse parameter is True for Descending Order sort
print("Sorted = \n",sorted(d, key = lambda item: item['marks'], reverse = True))
输出
Dictionary =
[{'name': 'Sam', 'marks': 98}, {'name': 'Tom', 'marks': 93}, {'name': 'Jacob', 'marks': 97}]
Sorted =
[{'name': 'Sam', 'marks': 98}, {'name': 'Jacob', 'marks': 97}, {'name': 'Tom', 'marks': 93}]
使用sorted()方法中的itemgetter方法对字典列表进行排序
示例
from operator import itemgetter
# list of dictionaries
d = [
{"name" : "Sam", "marks" : 98},
{"name" : "Tom", "marks" : 93},
{"name" : "Jacob", "marks" : 97}
]
# Display the Dictionary
print("Dictionary = \n",d)
# Sorting using values with the itemgetter function
print("Sorted = \n",sorted(d, key = itemgetter('marks')))
输出
Dictionary =
[{'name': 'Sam', 'marks': 98}, {'name': 'Tom', 'marks': 93}, {'name': 'Jacob', 'marks': 97}]
Sorted =
[{'name': 'Tom', 'marks': 93}, {'name': 'Jacob', 'marks': 97}, {'name': 'Sam', 'marks': 98}]