【发布时间】:2021-01-15 04:55:36
【问题描述】:
我有以下列表:
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']}
任何帮助将不胜感激!
【问题讨论】:
-
是什么决定了哪些数字会出现在
['01007', '01008', '01005']等列表中? -
你的元组值在某些情况下也会重复 btw,('0100', '01007') 出现多次,如果这样的元组有两个值低于其他第二列值怎么办