最近处理一堆这种数据格式,发现没有好的方法
是想把一个字典中的 key 和 value (是个 list)反转,并且按 key 聚合
mylist= {"key1": [{'a': '1'}, {'b': '2'}], "key2": [{"a": 2}, {"c": 4}]}
# 最终想要这个类型的数据 {"a": ["key1", "key2"], "b": ["key1"], "c": ["key2"]}
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} |
2
panacea 2020-08-25 12:42:10 +08:00 via iPhone
无非就是遍历一边存到一个新的 dict 里吧
|
3
Trim21 2020-08-25 12:59:55 +08:00 via Android
你拿之前那个问题的答案稍微改改就出来了…
|
4
css3 OP @lithbitren 感谢,很完美,像这类的处理数据方法,在哪里可以学到?感觉自己根本写不出来这种高级的处理方式,首先遇到这种永远想到的就是 for 循环😟
|
5
lithbitren 2020-08-25 14:31:15 +08:00
@css3 我的编码习惯基本都是刷 leetcode 刷出来的,从学习大佬到反哺社区,慢慢就熟练了,不过只要时间复杂度相当,写 for 循环也没啥不好的
|
6
css3 OP @lithbitren 学习了,回头我也刷刷力扣
|
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) |