gpt4 book ai didi

python - 从嵌套的 python 列表中获取 n 个最小值

转载 作者:行者123 更新时间:2023-12-04 15:17:11 26 4
gpt4 key购买 nike

我有以下列表:

l = [(('01001', '01003'), 4.15),
(('01001', '01005'), 2.83),
(('01001', '01007'), 3.32),
(('01001', '01008'), 2.32),
(('01001', '01009'), 9.32),
(('01001', '01007'), 0.32),
(('01002', '01009'), 6.83),
(('01002', '01011'), 2.53),
(('01002', '01009'), 6.83),
(('01002', '01011'), 2.53),
(('01002', '01009'), 6.83),
(('01002', '01011'), 2.53),
(('01003', '01013'), 20.50),
(('01003', '01013'), 10.50),
(('01003', '01013'), 0.50),
(('01003', '01013'), 2.50),
(('01003', '01013'), 20.30),
(('01003', '01013'), 12.50),
(('01003', '01013'), 1.50),
(('01003', '01013'), 2.40)]

我想为此列表的第一个元素(“01001”、“01002”和“01003”)选择 n 个最小值。

我能够用这段代码计算出最小值:

from itertools import groupby
from statistics import mean

{k:min(v for *_, v in v) for k,v in groupby(result_map, lambda x: x[0][0])}

但想要获得 3 个最小值和要打印的第二列:

预期结果将是这样的字典:

{'01001': ['01007', '01008', '01005'], '01002': ['01011', '01009', '01013']  , '01003': ['01013', '01013', ''01013']}

如有任何帮助,我们将不胜感激!

最佳答案

{k:[e[0][1] for e in sorted(v, key = lambda x: x[1])][:n] for k,v in groupby(result_map, lambda x: x[0][0])}

以上是您提供的带有 groupby 的代码,但进行了一些修改以计算 n 最小列表而不是最小列表。

从你的问题的例子中不清楚你是否想要 n-smallest 列表中的重复元素(第二个条目 '01002': ['01011', '01009', '01013'] 没有重复,但第三个 '01003': ['01013', '01013', ''01013'] 在你的例子中有重复),所以我提供第二个单行代码来解决任务重复:

{k:[e[0][1] for e in sorted({f[0][1] : f for f in v}.values(), key = lambda x: x[1])][:n] for k,v in groupby(result_map, lambda x: x[0][0])}

完整版代码can be found and tried online here!

关于python - 从嵌套的 python 列表中获取 n 个最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64121986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com