如何将动态数量的参数传递给函数?

问题描述:

我有一本字典,可能有不同数量的键。密钥的值是一个数字列表。我想比较这些列表中的每一个,并获取列表中所有项目的最大值。如何将动态数量的参数传递给函数?

内置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

发电机表达的正确语法将

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

如何:

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

对于字典,values()返回值,所以你不会探究很高兴需要迭代字典中的所有键/值。

+0

此工程...不认为这这很容易...我感到尴尬:( – emad 2012-04-13 20:25:39

给予字典垃圾邮件,你可以找到最大的

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

现在你的问题是位在这个意义含糊,什么是要找到

以上将返回其最大你有最大元素的列表的长度(又称长度是最大的)

如果你想要获得所有列表的最大元素(单个最大元素),你也可以做

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

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

max(spam.values())