例如:我的字典如下:
dic = {'bob':['0,5,1'], 'annie':['2,4,0'], 'charles':['0,7,0']}
我希望能够:
首先:对键进行排序,使其按字母顺序排列
其次:对每个键的值进行排序,以便选择最大值
我期望的结果是:
annie:4
bob:5
charles:7
我已经参与了很长一段时间,并且只能打印出总额最大的整个列表。例如,使用我当前的代码,我得到了这个:
[2, 4, 0]
[2, 4, 0]
[2, 4, 0]
这是因为程序找到具有最大总和的列表,并为字典中的每个键打印出来。我已经使用了max(dic.values())
。
我非常感谢您的帮助和最有效的方法。谢谢
答案 0 :(得分:0)
您可以使用OrderedDict
和sorted
功能:
>>> from collections import OrderedDict
>>> d=OrderedDict()
>>> dic_ = {'bob':['0,5,1'], 'annie':['2,4,0'], 'charles':['0,7,0']}
>>> for i,j in sorted((i,max(j[0].split(','))) for i,j in dic_.items()):
... d[i]=j
...
>>> d
OrderedDict([('annie', '4'), ('bob', '5'), ('charles', '7')])
答案 1 :(得分:0)
我不明白为什么每个值都只是一个字符串元素的列表。这是一个解决方案,但如果值是元素列表或逗号分隔字符串,则更有意义。
for key in sorted(dic.keys()):
print(key + ":" + str(max(dic[key][0].split(','))))
答案 2 :(得分:0)
值应该是整数列表,而不是字符串列表。
In [29]: dic = {'bob':[0,5,1], 'annie':[2,4,0], 'charles':[0,7,0]}
In [30]: for k in sorted(dic.keys()):
print k, max(dic[k])
....:
annie 4
bob 5
charles 7