有无可以对容器分类的库或函数?

2017-09-08 22:05:04 +08:00
 aheadlead

比如说,我有一个 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]
}

有这种工具吗? (虽然写一个也不麻烦)
感谢

2366 次点击
所在节点    Python
5 条回复
newlife
2017-09-08 22:15:17 +08:00
没有
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]
这样?
aheadlead
2017-09-08 22:20:00 +08:00
@lishunan246
. def classify(classifier, container):
. ret = defaultdict(list)
. for i in container:
. ret[classifier(i)].append(i)
. return ret
guyskk
2017-09-08 22:45:51 +08:00
itertools.groupby
NoAnyLove
2017-09-08 23:08:43 +08:00
听你的需求像是 itertools.groupby,但是 group 要求先对数据进行 sort,不然会产生多组相同 key 的结果

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/389308

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX