Python排序字典

Python排序可以通過內建函數sorted()實現,同時部分擁有sort()方法的數據類型也可以通過sort實現,由於字典沒有sort方法,所以用sorted實現

通過key值排序

d = {'a': 2, 'A': 1, 1: 3, 'b': 2}

sorted_key_list = sorted(d)
print(sorted_key_list)

sorted_dict = map(lambda x:{x:d[x]}, sorted_key_list)
print(sorted_dict)

結果如下:

[1, 'A', 'a', 'b'] #根據ascii碼大小排序
[{1: 3}, {'A': 1}, {'a': 2}, {'b': 2}]

結論:

  • sorted函數會產生一個新的列表,而sort方法則會改變原iterable對象

通過value排序

d = {'a': 2, 'A': 1, 1: 3, 'b': 2}

sorted_key_list = sorted(d, key=lambda x:d[x])
# sorted_key_list = sorted(d, key=lambda x:d[x], reverse=True)   倒序排列
print(sorted_key_list)

sorted_dict = map(lambda x:{x:d[x]}, sorted_key_list)
print(sorted_dict)

結果如下:

['A', 'a', 'b', 1]
[{'A': 1}, {'a': 2}, {'b': 2}, {1: 3}]

結論:

  • key是排序的索引,是一種規則,對於字典來說,排序的對象始終是鍵構成的列表,這裏的規則爲 lambda x:d[x], 即以字典的值爲索引排序
  • reverse意爲翻轉,默認此參數爲False不翻轉,即reverse=False,那就是正序首個字符ascii(其他語言按首個unicode編碼大小排序,中文無意義啊貌似)由小到大排序,改爲True即可由大到小排序了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章