Python给dict排序

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)]
"""
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值