Python 字典排序
字典是“鍵-值對”的無序可變序列
在實際運用中,對字典進行排序是一個比較常見的操作,主要用到了python內置函數sorted(),該函數可以對所有可迭代的對象進行排序操作。
語法(python3):
sorted(iterable, key=None,reverse=False)
參數說明:
iterable:可迭代對象,即可以用for循環進行迭代的對象;
key:主要是用來進行比較的元素,只有一個參數,具體的函數參數取自于可迭代對象中,用來指定可迭代對象中的一個元素來進行排序;
reverse:排序規則,reverse=False升序(默認),reverse=True降序。
以下總結了sorted()函數針對字典排序的用法。
第一種:最常見的單個字典格式數據排序
# 字典排序
a = {'a': 3, 'c': 89, 'b': 0, 'd': 34}
# 按照字典的值進行排序
a1 = sorted(a.items(), key=lambda x: x[1])
# 按照字典的鍵進行排序
a2 = sorted(a.items(), key=lambda x: x[0])
print('按值排序后結果', a1)
print('按鍵排序后結果', a2)
print('結果轉為字典格式', dict(a1))
print('結果轉為字典格式', dict(a2))
原理:以a.items()返回的列表[(‘a’, 3), (‘c’, 89), (‘b’,0), (‘d’, 34)]中的每一個元素,作為匿名函數(lambda)的參數,x[0]即用“鍵”排序,x[1]即用“值”排序;返回結果為新的列表,可以通過dict()函數轉為字典格式。
第二種:字典列表排序
b = [{'name': 'lee', 'age': 23}, {'name': 'lam', 'age': 12}, {'name': 'lam', 'age': 18}]
b1 = sorted(b, key=lambda x: x['name'])
b2 = sorted(b, key=lambda x: x['age'], reverse=True)
b3 = sorted(b, key=lambda x: (x['name'], -x['age']))
print('按name排序結果:', b1)
print('按age排序結果:', b2)
print('name相同按age降序排列:', b3)
原理:以列表b里面的每一個字典元素作為匿名函數的參數,然后根據需要用鍵取字典里面的元素作為排序的條件,如x[‘name’]即用name鍵對應的值來排序。
————————————————
版權聲明:本文為CSDN博主「一位代碼」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/LHJCSDNYL/article/details/122525942

浙公網安備 33010602011771號