[{'a': {'b':1, 'c':2}}, {'a': {'d':3, 'e':4}}]
如何转换成下面的结构,也就是不同字典里相同 key 的值,如何将对应的 value 合并,并组成一个新的字典
{'a':{'b':1, 'c':2, 'd':3, 'e':4}}
谢谢大家,求支招
[{'a': {'b':1, 'c':2}}, {'a': {'d':3, 'e':4}}]
如何转换成下面的结构,也就是不同字典里相同 key 的值,如何将对应的 value 合并,并组成一个新的字典
{'a':{'b':1, 'c':2, 'd':3, 'e':4}}
谢谢大家,求支招
|
lhx2008Nov 20, 2019 via Android
1
for 一下不就好了,字典合并有方法
|
|
anonymous256Nov 20, 2019 via Android
2
print(your_list[0].update(your_list[1]))
|
|
anonymous256Nov 20, 2019 via Android
3
测试了下,不可以这样写,而且 update 是不返回结果
|
|
5
@anonymous256 是的。而且 update 会覆盖具有相同 key 的 value
|
|
wuwukai007Nov 20, 2019
6
你是单独的一个 a,还是好多个不同的 键,那要分组了
|
|
7
|
|
cherbimNov 20, 2019
8
好像之能 for 循环更新键值
|
|
anonymous256Nov 20, 2019
9
l = [{'a': {'b': '1'}, 'b': '2'}, {'a': {'c': '3'}}]
empty = {} for item in l: for k, v in item.items(): if k in empty: empty[k].update(v) else: empty[k] = v print(empty) 输出: {'a': {'b': '1', 'c': '3'}, 'b': '2'} 大致是这样了, 实际的数据可能比这个复杂一点 |
|
anonymous256Nov 20, 2019
10
重发一下
l = [{'a': {'b': '1'}, 'b': '2'}, {'a': {'c': '3'}}] empty = {} for item in l: ....for k, v in item.items(): ........if k in empty: ............empty[k].update(v) ........else: ............empty[k] = v print(empty) 输出: {'a': {'b': '1', 'c': '3'}, 'b': '2'} |
|
11
a=[{'a': {'b':1, 'c':2}}, {'a': {'d':3, 'e':4}},{'b':{'q':5}},{'b':{'z':7}}]
res = pd.DataFrame(a).T res.mask(res.isna(),None,inplace=True) dict_1 = {} buffer = {} for key,value in res.iterrows(): ----x = [buffer.update(i) for i in value if i is not None] ----dict_1[key] = buffer.copy() ----buffer.clear() dict_1 >>> {'a': {'b': 1, 'c': 2, 'd': 3, 'e': 4}, 'b': {'q': 5, 'z': 7}} |
|
andylsrNov 20, 2019 via Android
13
用 defaultdict,直接对值 update
|
|
14
@andylsr
In [1]: from collections import defaultdict In [2]: result = defaultdict(dict) In [3]: items = [{'a': {'b':1, 'c':2}}, {'a': {'d':3, 'e':4}}] In [4]: for item in items: ...: for k, v in item.items(): ...: result[k].update(v) ...: result Out[4]: defaultdict(dict, {'a': {'b': 1, 'c': 2, 'd': 3, 'e': 4}}) |
|
15
...: lst = [{'a': 123}, {'a': 456},{'b': 789}]
...: ...: temp = {} ...: for _ in lst: ...: for k, v in _.items(): ...: dic.setdefault(k, []).append(v) ...: ...: print([{k:v} for k, v in dic.items()]) ...: ...: ...: ...: [{'a': [123, 456]}, {'b': [789]}] |
|
yucongoNov 27, 2019
16
from functools import reduce
lst = [{'a': {'b':1, 'c':2}}, {'a': {'d':3, 'e':4}}] data = reduce(lambda x, y: {**x, **y}, [elm.get('a') for elm in lst]) {'a': data} #-> {'a': {'b': 1, 'c': 2, 'd': 3, 'e': 4}} |