首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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
宝塔
V2EX  ›  Python

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

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

    比如说,我有一个 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
        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   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
        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 的结果
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2375 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 21ms · UTC 14:44 · PVG 22:44 · LAX 06:44 · JFK 09:44
    ♥ Do have faith in what you're doing.