2012-04-13 149 views
2

我有一本字典,可能有不同數量的鍵。密鑰的值是一個數字列表。我想比較這些列表中的每一個,並獲取列表中所有項目的最大值。如何將動態數量的參數傳遞給函數?

內置MAX()函數會給我最大的所有項目,如果我在下面的方式通過了它:

MAX(LISTA,數組listB,listc)

列表的數量各不相同,我的字典裏看起來是這樣的:

myDict = {1:LISTA,2:數組listB:3:listc,...}

我想或這樣的事情:

maxlist = max(myDict.keys()中的項目):myDict [item])

但我認爲這不起作用。請幫忙!

+0

不這樣做的最佳方式,但如果你說你會工作...... maxlist = MAX( [myDict [x] for myDict.keys()]) – jcfollower 2012-04-13 20:11:35

回答

1

發電機表達的正確語法將

maxlist = max(myDict[item] for item in myDict.keys()) 

這將是在這種情況下,更容易在第一時間使用myDict.values()

maxlist = max(myDict.values()) 
+0

這也適用於我。由於我設置字典的方式,我最終使用了生成器表達式。 用於頻帶中aptData [文件] .keys(): \t \t用於信道在aptData [文件] [帶] .keys(): \t \t \t用於模式在aptData [文件] [帶] [信道]。鍵(): \t \t \t \t TXPWR = MAX(aptData [樣品] [帶] [頻道] [模式] [0]在aptData.keys樣品()) – emad 2012-04-13 20:55:24

1

如何:

>>> p = {1: [2,3], 4: [5,6,7]} 
>>> max(p.values()) 
[5, 6, 7] 

對於字典,values()返回值,所以你不會探究很高興需要迭代字典中的所有鍵/值。

+0

此工程...不認爲這這很容易...我感到尷尬:( – emad 2012-04-13 20:25:39

0

給予字典垃圾郵件,你可以找到最大的

max(spam.values(),key=len) 

現在你的問題是位在這個意義含糊,什麼是要找到

以上將返回其最大你有最大元素的列表的長度(又稱長度是最大的)

如果你想要獲得所有列表的最大元素(單個最大元素),你也可以做

max(itertools.chain(*spam.values())) 

相反,如果你想找到具有最大價值的列表,你可以做

max(spam.values()) 
相關問題