a = [1, 7, 3]
b = [5, 3, 6]
c = [3, 5, 4]
l = {
"a": a,
"b": b,
"c": c
}
k = list(l.keys())
transposed = list(map(list, zip(*l.values())))
max_indexes = [x.index(max(x)) for x in transposed]
column_max_with_keys = [(x[i], k[i]) for i, x in zip(max_indexes, transposed)]
[max(i) for i in zip(*([(i, k) for i in v] for k, v in l.items()))]
另一种选择是利用map()的能力来处理多个可迭代项并在那里解包列表:
list(map(max, *([(i, k) for i in v] for k, v in l.items())))
完整代码:
l = {
"a": [1, 7, 3],
"b": [5, 3, 6],
"c": [3, 5, 4]
}
result = [max(i) for i in zip(*([(i, k) for i in v] for k, v in l.items()))]
# OR
result = list(map(max, *([(i, k) for i in v] for k, v in l.items())))
3条答案
按热度按时间khbbv19g1#
结果:
dgjrabp22#
我本身并不需要字符串,而是返回最大值所在的列表。
鉴于OP的这种区别,我编写了以下代码片段:
此函数接受任意数量的列表,并查找列表中的最大值。然后将长度为2的元组添加到return_data列表中。列表中的每个元组的格式为:
(max_值,列表_搜索)
其中max_value是在list_searched中找到的最大值。
k5ifujac3#
您需要将源字典转换为值和键的嵌套列表,并应用
max()
从相同索引的值中查找最大值。初始转换可以使用下一个列表解析来完成:
然后我们可以使用不同的选项一起迭代内部列表,第一个选项是将它们解包成
zip()
,并使用另一个列表解析对每个组调用max:另一种选择是利用
map()
的能力来处理多个可迭代项并在那里解包列表:完整代码:
输出: