python列表求最小值索引_python – 在列表字典的每个索引处查找最小值和最大值...

您可以使用最小和最大的zip:

dct = {'key1': [1,2,3,4,5], 'key2': [2,0,4,5,6]}

[min(i) for i in zip(*dct.values())]

[max(i) for i in zip(*dct.values())]

输出:

[1, 0, 3, 4, 5]

[2, 2, 4, 5, 6]

如果你想变得非常花哨,你也可以使用两次转换技巧拉链将它变成一个单行:

min_list, max_list = map(list, zip(*[(min(i), max(i)) for i in zip(*dct.values())]))

min_list

[1, 0, 3, 4, 5]

max_list

[2, 2, 4, 5, 6]

这种奇特的方法在空列表中表现不佳

例如:

dct = {1: [], 2: []}

会打破这种方法.事实上,几乎所有打破这种方法的方法都涉及在某处使用空列表.

我已经两次提到了zip转换技巧,所以这就是为什么这里有必要:

如果您只使用list(zip(dct.values())),您将获得以下输出:

[([2, 0, 4, 5, 6],), ([1, 2, 3, 4, 5],)]

这不是理想的结果,我们希望对子列表的每个索引处的每个元素进行成对比较.但是,当您使用*运算符时,我们可以利用zip is its own tranpose的事实.

因此,使用list(zip(* dct.values()))为我们提供了所需的成对分组以进行比较:

[(2, 1), (0, 2), (4, 3), (5, 4), (6, 5)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值