dict 内部是按照哈希值排序的,所以无法得到一个按照键/值
升序/降序 的dict。
不过可以得到一个排好序的列表。
比如 d = {"a":1 , "b":3, "c":2}
排序后得到 [('a', 1), ('c', 2), ('b', 3)]
按照值排序
d = {"a":1 , "b":3, "c":2}
"""
得到排好序的列表
>>>d.items()
>>>dict_items([('a', 1), ('b', 3), ('c', 2)])
reverse是排序规则是否反过来,默认是升序
reverse = False 升序
reverse = True 降序
>>>d_list
>>>[('a', 1), ('c', 2), ('b', 3)]
"""
def get_sorted_list(d, reverse=False):
return sorted(d.items(), key=lambda x:x[1], reverse=reverse)
d_list = get_sorted_list(d)
我们可以获取排好序后的key和value(这完全取决于你需要哪个)
for key,val in d_list:
print(key,val)
"""
out:
a 1
c 2
b 3
"""
按照键排序
d = {"a":1 , "b":3, "c":2}
def sort_dict_by_keys(d, reverse=True):
# 这里如果不强制转换会报错,因为d.keys()的类型是:<class 'dict_keys'>,没有sort方法
keys = list(d.keys())
keys.sort(reverse=reverse)
return [(key,d[key]) for key in keys]
d_sort = sort_dict_by_keys(d)
print(d_sort)
"""
out:
[('c', 2), ('b', 3), ('a', 1)]
"""