如何对包含负数的Python字典按数值排序并输出为列表?
解决字典按数值(含负数)排序输出键列表的问题
要实现按字典值从小到大排序并输出对应键的列表,核心是给sorted()函数的key参数指定正确的排序依据:
正确代码实现
number1 = 1 number2 = -5 number3 = -2 number4 = 3 my_dict = {"a" : number1, "b" : number2, "c" : number3, "d" : number4 } # 指定key为字典中对应键的值,实现按值升序排序 sorted_keys = sorted(my_dict, key=lambda k: my_dict[k]) print(sorted_keys)
输出结果
['b', 'c', 'a', 'd']
原理说明
sorted(my_dict)默认会对字典的键进行排序,不符合需求。- 通过
lambda k: my_dict[k]定义排序规则:每次取字典的键k,返回其对应的值作为排序的依据,这样sorted()就会按照值的大小对键进行排序,负数会被正确识别并按从小到大排列。
如果需要按值降序排序,只需添加reverse=True参数:
sorted_keys_desc = sorted(my_dict, key=lambda k: my_dict[k], reverse=True) # 输出: ['d', 'a', 'c', 'b']
内容的提问来源于stack exchange,提问作者Chopperdom
相关产品推荐
相关产品推荐

