还得请教 Python 一个 dict 问题

2020-08-25 11:56:32 +08:00
 css3

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

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

mylist= {"key1": [{'a': '1'}, {'b': '2'}], "key2": [{"a": 2}, {"c": 4}]}
# 最终想要这个类型的数据 {"a": ["key1", "key2"], "b": ["key1"], "c": ["key2"]}

2060 次点击
所在节点    Python
7 条回复
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
2020-08-25 12:42:10 +08:00
无非就是遍历一边存到一个新的 dict 里吧
Trim21
2020-08-25 12:59:55 +08:00
你拿之前那个问题的答案稍微改改就出来了…
css3
2020-08-25 14:26:35 +08:00
@lithbitren 感谢,很完美,像这类的处理数据方法,在哪里可以学到?感觉自己根本写不出来这种高级的处理方式,首先遇到这种永远想到的就是 for 循环😟
lithbitren
2020-08-25 14:31:15 +08:00
@css3 我的编码习惯基本都是刷 leetcode 刷出来的,从学习大佬到反哺社区,慢慢就熟练了,不过只要时间复杂度相当,写 for 循环也没啥不好的
css3
2020-08-25 18:59:01 +08:00
@lithbitren 学习了,回头我也刷刷力扣
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)

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

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

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

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

© 2021 V2EX