2015-04-05 28 views
0

例如最大值:我的字典如下:字典中的值排序检索每个键

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

侯赛因,欢迎您!答案是否解决了您的问题? – 2015-04-09 00:57:54

回答

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 
+0

非常感谢,我非常感谢。 – Hussain 2015-04-08 18:20:12

0

您可以使用OrderedDictsorted功能:

>>> 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')]) 
0

我不明白为什么每个值只有一个是一个字符串元素的列表。这是一个解决方案,但如果值是元素列表或用逗号分隔的字符串,则会更有意义。

for key in sorted(dic.keys()): 
    print(key + ":" + str(max(dic[key][0].split(','))))