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

时间:2012-04-13 19:46:15

标签: python

我有一本字典可能有不同数量的键。键的值是一个数字列表。我想比较每个列表并获得列表中所有项目的最大值。

内置的max()函数将为我提供所有项目的最大值,如果我通过以下方式传递它:

max(lista,listb,listc)

列表的数量各不相同,我的字典看起来像这样:

myDict = {1:lista,2:listb:3:listc,...}

我在想或类似的东西:

maxlist = max(对于myDict.keys()中的项目:myDict [item])

但我认为这不起作用。请帮忙!

3 个答案:

答案 0 :(得分:1)

生成器表达式的正确语法是

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

在这种情况下,首先使用myDict.values()会更容易:

maxlist = max(myDict.values())

答案 1 :(得分:1)

怎么样:

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

对于字典,values()返回值,因此您不需要显式迭代字典中的所有键/值。

答案 2 :(得分:0)

鉴于字典垃圾邮件,您可以找到最大值

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

现在你的问题在某种意义上有点含糊不清,你想找到的最大值是什么

以上将返回列表的长度,该列表具有最大元素(也就是长度是最大值)

如果您希望获得所有列表的最大元素(单个最大元素),您也可以

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

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

max(spam.values())