繁体   English   中英

根据值的大小打印字典

[英]Printing a dictionary based on the size of the values

我有一本看起来像这样的字典

`{'a':2,'b':3,'c':2}` 

我需要从最大的值开始打印键和值。 所需的输出如下:

'b' 3
'a' 2
'c' 2

“ a”和“ c”的顺序不必一定是字母顺序,重要的是首先打印最大值 ,依此类推。

我正在用python 3。

我试图使用旧值作为键来创建新字典,反之亦然,但是问题是我多次拥有相同的值。

有人可以帮助一个困惑的学生解决这个问题吗?

通过iteritems方法将对象转换为列表,对其进行排序(在此借助sortSec自定义函数),然后循环打印:

def sort_sec(val): 
    return val[1]  

input = {'a':2,'b':3,'c':2}
dictlist = []

for key, value in input.iteritems():
    dictlist.append([key,value])

dictlist.sort(key=sort_sec, reverse=True)

for el in dictlist:
    print(el[0] + ' ' + str(el[1]))

仅作记录,这是一个简单的解决方案:

dd = {'a':2,'b':3,'c':2}
ll = (zip(dd.values(), dd.keys()))
ll.sort(reverse=True) # Sorted by value
[(3, 'b'), (2, 'c'), (2, 'a')] # Print as needed

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM