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
css3
V2EX  ›  Python

还得请教 Python 一个 dict 问题

  •  
  •   css3 · 2020-08-25 11:56:32 +08:00 · 1318 次点击
    这是一个创建于 464 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近处理一堆这种数据格式,发现没有好的方法

    是想把一个字典中的 key 和 value (是个 list)反转,并且按 key 聚合

    mylist= {"key1": [{'a': '1'}, {'b': '2'}], "key2": [{"a": 2}, {"c": 4}]}
    # 最终想要这个类型的数据 {"a": ["key1", "key2"], "b": ["key1"], "c": ["key2"]}
    
    
    7 条回复    2020-09-12 07:12:45 +08:00
    lithbitren
        1
    lithbitren  
       2020-08-25 12:39:17 +08:00
    newlist = collections.defaultdict(list)
    for k, v in mylist.items():
    __for c in map(lambda d: next(iter(d)), v):
    ____newlist[c].append(k)
    # newlist={**newlist}
    panacea
        2
    panacea  
       2020-08-25 12:42:10 +08:00 via iPhone
    无非就是遍历一边存到一个新的 dict 里吧
    Trim21
        3
    Trim21  
       2020-08-25 12:59:55 +08:00 via Android
    你拿之前那个问题的答案稍微改改就出来了…
    css3
        4
    css3  
    OP
       2020-08-25 14:26:35 +08:00 via iPhone
    @lithbitren 感谢,很完美,像这类的处理数据方法,在哪里可以学到?感觉自己根本写不出来这种高级的处理方式,首先遇到这种永远想到的就是 for 循环😟
    lithbitren
        5
    lithbitren  
       2020-08-25 14:31:15 +08:00
    @css3 我的编码习惯基本都是刷 leetcode 刷出来的,从学习大佬到反哺社区,慢慢就熟练了,不过只要时间复杂度相当,写 for 循环也没啥不好的
    css3
        6
    css3  
    OP
       2020-08-25 18:59:01 +08:00 via iPhone
    @lithbitren 学习了,回头我也刷刷力扣
    biglazycat
        7
    biglazycat  
       2020-09-12 07:12:45 +08:00
    mylist= {"key1": [{'a': '1'}, {'b': '2'}], "key2": [{"a": 2}, {"c": 4}]}

    result = {}
    for key, val in mylist.items():
    for i in val:
    result.setdefault(list(i)[0],[]).append(key)
    print(result)
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1842 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 00:18 · PVG 08:18 · LAX 16:18 · JFK 19:18
    ♥ Do have faith in what you're doing.