python-列表包字典-根據字典的某一個鍵的值來進行排序
列表包字典的數據結構
要實現按照字典中的某一個鍵所對應的值進行排序
有兩種辦法
方法一,使用列表的sort方法
由小到大排
列表.sort(key=lambda 形參:形參[str鍵名稱])
由大到小排
列表.sort(key=lambda 形參:形參[str鍵名稱], reverse=True)
方法二,使用sorted函數
由小到大排序
新列表 = sorted(列表,key=lambda 形參:形參[str鍵名稱])
由大到小排序
新列表 = sorted(列表,key=lambda 形參:形參[str鍵名稱], reverse = True)
舉例說明
stuDictList = [
{"name": "張飛", "power": 96, "tellegent": 30},
{"name": "諸葛亮", "power": 40, "tellegent": 99},
{"name": "周瑜", "power": 79, "tellegent": 93},
{"name": "趙雲", "power": 97, "tellegent": 86},
]
print("原始的數據\n{}".format(stuDictList))
# 原始的數據
# [{'name': '張飛', 'power': 96, 'tellegent': 30}, {'name': '諸葛亮', 'power': 40, 'tellegent': 99}, {'name': '周瑜', 'power': 79, 'tellegent': 93}, {'name': '趙雲', 'power': 97, 'tellegent': 86}]
print("開始按照武力排序,由小到大")
stuDictList.sort(key=lambda stu: stu["power"])
print("排好序后新數據\n{}".format(stuDictList))
# 開始按照武力排序,由小到大
# 排好序后新數據
# [{'name': '諸葛亮', 'power': 40, 'tellegent': 99}, {'name': '周瑜', 'power': 79, 'tellegent': 93}, {'name': '張飛', 'power': 96, 'tellegent': 30}, {'name': '趙雲', 'power': 97, 'tellegent': 86}]
print("開始按照智力值排序,由大到小")
def func(ele):
return ele["tellegent"]
new_list = sorted(stuDictList, key=func, reverse=True)
print("排序結果{}".format(new_list))
# 開始按照智力值排序,由大到小
# 排序結果[{'name': '諸葛亮', 'power': 40, 'tellegent': 99}, {'name': '周瑜', 'power': 79, 'tellegent': 93}, {'name': '趙雲', 'power': 97, 'tellegent': 86}, {'name': '張飛', 'power': 96, 'tellegent': 30}]
operator 模塊
import operator
new_list = sorted(stuDictList, key=operator.itemgetter('tellegent'), reverse=True)
print(new_list)
# [{'name': '諸葛亮', 'power': 40, 'tellegent': 99}, {'name': '周瑜', 'power': 79, 'tellegent': 93}, {'name': '趙雲', 'power': 97, 'tellegent': 86}, {'name': '張飛', 'power': 96, 'tellegent': 30}]