Note:我当然知道如何在显式 for 循环中做到这一点,但我正在寻找一个更具可读性的解决方案。
如果可能的话,我想通过使用一些内置功能来解决这个问题。最好的情况是这样的
result = [ *groupby logic* ]
假设有以下列表:
import numpy as np
np.random.seed(42)
N = 10
my_tuples = list(zip(np.random.choice(list('ABC'), size=N),
np.random.choice(range(100), size=N)))
where my_tuples
is
[('C', 74),
('A', 74),
('C', 87),
('C', 99),
('A', 23),
('A', 2),
('C', 21),
('B', 52),
('C', 1),
('C', 87)]
如何使用标签 A、B 和 C 对索引(每个元组索引 1 处的整数值)进行分组groupby
来自 itertools?
如果我做这样的事情:
from itertools import groupby
#..
[(k,*v) for k, v in dict(groupby(my_tuples, lambda x: x[0])).items()]
我发现这会产生错误的结果。
期望的结果应该是
{
'A': [74, 23, 2],
# ..
}