比如说,我有一个 list
>>> l = [2, 3, 4, 5, 2, 3, 4, 2, 6, 4, 3]
我还有一个函数
>>> fn = lambda x: x%2
我想根据把 l 的每个元素作用到函数 fn 上
根据其返回值分类
>>> SOME_FUNCTION(fn, l)
{
0: [2, 4, 2, 4, 2, 6, 4],
1: [3, 5, 3, 3]
}
有这种工具吗? (虽然写一个也不麻烦)
感谢
1
newlife 2017-09-08 22:15:17 +08:00
没有
|
2
lishunan246 2017-09-08 22:17:30 +08:00
d = {}
for x in l: r = f(x) if r in d: d[r].append(x) else: d[r] = [x] 这样? |
3
aheadlead OP @lishunan246
. def classify(classifier, container): . ret = defaultdict(list) . for i in container: . ret[classifier(i)].append(i) . return ret |
4
guyskk 2017-09-08 22:45:51 +08:00 via Android 1
itertools.groupby
|
5
NoAnyLove 2017-09-08 23:08:43 +08:00 1
听你的需求像是 itertools.groupby,但是 group 要求先对数据进行 sort,不然会产生多组相同 key 的结果
|