
比如说,我有一个 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 itertools.groupby |
5 NoAnyLove 2017-09-08 23:08:43 +08:00 听你的需求像是 itertools.groupby,但是 group 要求先对数据进行 sort,不然会产生多组相同 key 的结果 |