![](/img/trans.png)
[英]How to return maximum of value in a tuple within a list within a dictionary?
[英]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()}
您还可以将sorted
与dict 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.