Python 映射到最大值的列表数目可变

Python 映射到最大值的列表数目可变,python,Python,我有一个可变数量的列表,我想从所有列表中找出这些数字的最大值 我试图使用map函数映射所有列表的最大值,并且需要使用生成器表达式在map函数中传递参数 我正在使用类似的东西,但它不起作用: map(max,x[c] for c in x.keys()) 例如,我的列表在字典中: {1: [0, 1, 0, 0, 3, 0], 2: [1, 0, 0, 0, 0, 4, 5], 3: [0, 5, 6, 0, 1, 1]} 您可能注意到列表的大小并不都相同,这正是我所希望的,因为我有需要解

我有一个可变数量的列表,我想从所有列表中找出这些数字的最大值

我试图使用map函数映射所有列表的最大值,并且需要使用生成器表达式在map函数中传递参数

我正在使用类似的东西,但它不起作用:

map(max,x[c] for c in x.keys())
例如,我的列表在字典中:

{1: [0, 1, 0, 0, 3, 0],
 2: [1, 0, 0, 0, 0, 4, 5],
 3: [0, 5, 6, 0, 1, 1]}
您可能注意到列表的大小并不都相同,这正是我所希望的,因为我有需要解析的数据

这样做的结果应该是:
[1,5,6,0,3,4,5]

如果还有其他方法,请提出建议


以上是列表的一个示例。我无法使用x.values()检索列表,因为我的实际字典是以这种方式设置的。列表嵌入在层次结构的底部,我需要遍历层次结构的顶部来检索要比较的列表。我必须使用生成器表达式来检索所有列表,因此请提供不使用x.values()的解决方案。

要使
max
s超过最短值的末尾,您需要
izip\u longest

from itertools import izip_longest

d={1: [0, 1, 0, 0, 3, 0],
 2: [1, 0, 0, 0, 0, 4, 5],
 3: [0, 5, 6, 0, 1, 1]}

# there are other variations like
# [max(column) for column in izip_longest(*d.itervalues())]
print map(max, izip_longest(*d.values()))
# [1, 5, 6, 0, 3, 4, 5]
它在Python3上被称为
zip\u longest


即使您没有访问所有列表的简单方法,这仍然是一种方法。您可以根据需要获取列表:

d = {1: {'a': [0, 1, 0, 0, 3, 0]},
     2: {'a': [1, 0, 0, 0, 0, 4, 5]},
     3: {'a': [0, 5, 6, 0, 1, 1]}}

def value_gen(obj):
    for key in obj:
        yield obj[key]['a']
然后使用:

map(max, izip_longest(*value_gen(d)))

要使
max
s超过最短值的末尾,需要
izip_longest

from itertools import izip_longest

d={1: [0, 1, 0, 0, 3, 0],
 2: [1, 0, 0, 0, 0, 4, 5],
 3: [0, 5, 6, 0, 1, 1]}

# there are other variations like
# [max(column) for column in izip_longest(*d.itervalues())]
print map(max, izip_longest(*d.values()))
# [1, 5, 6, 0, 3, 4, 5]
它在Python3上被称为
zip\u longest


即使您没有访问所有列表的简单方法,这仍然是一种方法。您可以根据需要获取列表:

d = {1: {'a': [0, 1, 0, 0, 3, 0]},
     2: {'a': [1, 0, 0, 0, 0, 4, 5]},
     3: {'a': [0, 5, 6, 0, 1, 1]}}

def value_gen(obj):
    for key in obj:
        yield obj[key]['a']
然后使用:

map(max, izip_longest(*value_gen(d)))

很抱歉搞混了。设置列表的方式我不能只使用x.values()来检索所有列表,因为列表嵌入在层次结构的底部,我需要在层次结构的顶部进行迭代,我必须使用键作为检索列表的方式…x.values()不适用于methis。它适用于我:map(max,izip_longest(*(x[c]表示x.keys()中的c)))很抱歉搞混了。设置列表的方式我不能只使用x.values()来检索所有列表,因为列表嵌入在层次结构的底部,我需要在层次结构的顶部进行迭代,我必须使用键作为检索列表的方式…x.values()不适用于methis。它适用于我:map(max,izip_longest(*(x[c]表示x.keys()中的c)))我知道你已经得到了一个对你有用的答案。仅供参考
map(max,x[c]表示x.keys()中的c)
不起作用,因为生成器表达式必须放在括号中。如果我做了
map(max,(x[c]表示x中的c))
就行了。我知道你已经得到了一个对你有用的答案。仅供参考
map(max,x[c]表示x.keys()中的c)
不起作用,因为生成器表达式必须放在括号中。如果我做
map(max,(x[c]表示x中的c))