最近处理一堆这种数据格式,发现没有好的方法
是想把一个字典中的 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) |