2015-04-05 26 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(','))))