繁体   English   中英

如何在字典中找到列表的最大值

[英]How to find the maximum value of a list within a dictionary

我正在尝试创建一个字典,其值是列表的第一个元素和列表的第二个元素之间的最大值,我创建了这个代码,但它返回第一个列表和第二个列表之间的最大值,我不希望那样。

import numpy as np

dict_pm = {1: [[7560.0, 3346.667], [58440.0, 14653.333]], 
           2: [[460.0, 7500.0], [33460.0, 7500.0]], 
           3: [[3980.0, 1153.333], [12980.0, 10153.333]]}

dict_pm = {key:[np.max(valor[0]),np.max(valor[1]) ] for key, valor in dict_pm.items()}

可以有 n 个列表,简而言之,我希望我的字典看起来像这样:

Input: dict_pm = {1: [[7560.0, 3346.667], [58440.0, 14653.333]], 2: [[460.0, 7500.0], [33460.0, 7500.0]], 3: [[3980.0, 1153.333], [12980.0, 10153.333]]}

Output: dict_pm = {1: [58440.0, 14653.333], 2: [33460.0, 7500.0], 3: [12980.0, 10153.333]}

我最大的列表可以容纳超过 2 个小列表,在任何情况下,小列表总是有 2 个元素,但是逻辑是相同的:

Input:
dict_pm = {1: [[7560.0, 3346.667], [58440.0, 14653.333], [40.0, 14.33]], 2: [[460.0, 7500.0], [33460.0, 7500.0], [60.0, 7.0]], 3: [[3980.0, 1153.333], [12980.0, 10153.333], [80.0, 1.33]]}

Output:
dict_pm = {1: [58440.0, 14653.333], 2: [33460.0, 7500.0], 3: [12980.0, 10153.333]}

您可以zip每个valor的子列表和map将它们改为max function:

{key: list(map(max, zip(*valor))) for key, valor in dict_pm.items()}

您还可以将sorteddict comprehension结合使用

In [8]: {k : sorted(v, key=lambda x : (x[0], x[1]))[-1] for k, v in dict_pm.items()}

Out[8]: {1: [58440.0, 14653.333], 2: [33460.0, 7500.0], 3: [12980.0, 10153.333]}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM