根据值的大小打印字典

问题描述 投票:0回答:2

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

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

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

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

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

我正在写python 3。

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

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

python python-3.x dictionary
2个回答
0
投票

通过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]))

0
投票

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

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
© www.soinside.com 2019 - 2024. All rights reserved.