对字典进行排序

4 阅读2分钟

对字典进行排序

1. 按字典的键(key)排序

  • 在Python中,可以使用内置的sorted()函数对字典进行排序。sorted()函数会返回一个排好序的列表,列表中的元素是字典的键值对(以元组形式)。如果要得到排序后的字典,可以使用字典推导式将排好序的列表转换回字典。
  • 示例代码:
my_dict = {'c': 2, 'a': 3, 'b': 1}
sorted_dict_by_key = dict(sorted(my_dict.items()))
#sorted函数排序字典时返回一个列表:[('a', 3), ('b', 1), ('c', 2)] ,返回的列表中的元素为元组,例如:('a',3)
print(sorted(my_dict.items()))  
print(sorted_dict_by_key)  #{'a': 3, 'b': 1, 'c': 2},按KEY排序:a,b,c
  • 在上述代码中,my_dict.items()返回一个包含所有键值对的可迭代对象,sorted()函数对这个可迭代对象进行排序,默认是按键进行排序。最后通过字典推导式dict()将排序后的结果转换为字典。
  1. 按字典的值(value)排序
    • 要按字典的值排序,同样使用sorted()函数,但需要通过key参数指定排序依据为字典的值。
    • 示例代码:
my_dict = {'c': 2, 'a': 3, 'b': 1}
print(sorted(my_dict.items(), key=lambda item: item[0])) #item[0]结果:[('a', 3), ('b', 1), ('c', 2)]
print(sorted(my_dict.items(), key=lambda item: item[1])) #item[1]结果:[('b', 1), ('c', 2), ('a', 3)]
sorted_dict_by_value = dict(sorted(my_dict.items(), key=lambda item: item[1]))
print(sorted_dict_by_value)  # {'b': 1, 'c': 2, 'a': 3},按键值排序:1,2,3
  • 这里key = lambda item: item[1]表示按照字典键值对元组中的第二个元素(即值)进行排序。lambda函数定义了一个匿名函数,itemmy_dict.items()返回的每个键值对元组,item[1]表示取元组中的值作为排序依据。最后再将排序后的结果转换为字典。
  1. 按字典的值降序排序
    • 只需在按值排序的基础上,设置reverse=True参数即可实现降序排序。
    • 示例代码:
my_dict = {'c': 3, 'a': 1, 'b': 2}
sorted_dict_by_value_desc = dict(sorted(my_dict.items(), key=lambda item: item[1], reverse=True))
print(sorted_dict_by_value_desc)
  • 这样就会按照字典的值从大到小进行排序,并返回排序后的字典。