python-列表包字典-根據字典的某一個鍵的值來進行排序


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

原文鏈接:https://blog.csdn.net/ifubing/article/details/99607452


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM