V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
aheadlead
V2EX  ›  Python

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

  •  
  •   aheadlead · 2017-09-08 22:05:04 +08:00 · 2187 次点击
    这是一个创建于 2415 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    5 条回复    2017-09-08 23:08:43 +08:00
    newlife
        1
    newlife  
       2017-09-08 22:15:17 +08:00
    没有
    lishunan246
        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]
    这样?
    aheadlead
        3
    aheadlead  
    OP
       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
        4
    guyskk  
       2017-09-08 22:45:51 +08:00 via Android   ❤️ 1
    itertools.groupby
    NoAnyLove
        5
    NoAnyLove  
       2017-09-08 23:08:43 +08:00   ❤️ 1
    听你的需求像是 itertools.groupby,但是 group 要求先对数据进行 sort,不然会产生多组相同 key 的结果
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   894 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:23 · PVG 05:23 · LAX 14:23 · JFK 17:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.