python - 给定一个列表字典,是否有一种 Python 的智能方法来比较每个列表的第 i 个元素并提取最大值?
问题描述
我有一本像下面这样的字典:
{
'k0': [10, 35, 20],
'k1': [2, 0, 40],
'k2': [21, 400, 5],
}
我想在列表的每个第 i 个位置获得一个最大值的列表。例如,在这种情况下:
max_val_list = [21, 400, 40]
目前的做法(这对我来说似乎太乱了): 1. 提取列表:
k0_list = dicc_name[k0]
k1_list = dicc_name[k1]
k2_list = dicc_name[k2]
- 找到最大值:
for i, item in enumerate(k0_list):
max_val_list.append(max([item, k1_list[i], k2_list[i]]))
我确信必须有一种方法可以直接从字典中以一种优雅的方式做到这一点,我想学习。
解决方案
您可以zip
获取字典的值,并获取每列的最大值:
data = {
'k0': [100, 35, 20],
'k1': [2, 0, 40],
'k2': [21, 400, 5],
}
[max(col) for col in zip(*data.values())]
# [100, 400, 40]
推荐阅读
- c++ - 从 OpenCV 的 videocapture 中只读取 mp4 文件的一部分
- azure - 从 ARM 模板中的 customData (cloud-init) 部分访问 keyvault 中的机密
- javascript - 如何在threejs中添加gltf模型?
- python - 将 pandas 数组的数据类型从 obj 更改为 int
- html - 不同子域的不同社交元预览
- ios - AVCaptureVideoDataOutput 在 iOS 14 中停止传送帧
- c# - 如何在系统路径中找到文件的位置,例如 get-command 或 where?
- perl - Perl 中的 Jenkins 哈希?
- python - 我如何对 docx 生成功能进行单元测试
- python - Akamai Python 登录与耐克