python dict merge
迷茫
迷茫 2017-06-14 10:53:21
0
2
816

There are two dictionaries a and b, both of which have a common id 1, to realize the merging of dicts
and in mysqlselect a.id,a.MUT,b.neighbor from a full join b on a.id = b.id
The execution result is very similar

a = { "id": "1", "MUT": "1500", } b = { "id": "1", "neighbor": [2] } # result = addfunction(a,b) result = { "id": "1", "MUT": "1500", "neighbor": [2] }

How to achieve?



Consider complex situations:

a = [ { "id": "1", "MUT": "1500", }, { "id": "2", "MUT": "1500", } ] b = [ { "id": "1", "neighbor": [2] }, { "id": "3", "neighbor": [2] } ] # result = addfunction(a,b) result = [ { "id": "1", "MUT": "1500", "neighbor": [2] }, { "id": "2", "MUT": "1500", }, { "id": "3", "neighbor": [2] } ]
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

reply all (2)
Ty80
l_a = len(a) l_b = len(b) b_map = {} result = [] for _ in range(l_b): i = b.pop() b_map[i['id']] = i for _ in range(l_a): i = a.pop() if i['id'] in b_map: i.update(b_map.pop(i['id'])) result.append(i) result.extend(b_map.values()) print(result) [{'MUT': '1500', 'id': '2'}, {'MUT': '1500', 'id': '1', 'neighbor': [2]}, {'id': '3', 'neighbor': [2]}]
    某草草
    from collections import defaultdict def combineListDict(l1,l2,joinKeys = ["id"]): d = defaultdict(dict) for l in (l1, l2): for elem in l: if len(joinKeys) == 1: joinKeysStr = elem[joinKeys[0]] else: joinKeysStr = reduce((lambda x, y: str(elem[x]) + str(elem[y])),joinKeys) d[joinKeysStr].update(elem) return d.values()

    Because the join on condition may have multiple values, I found a code on stack and changed it.

      Latest Downloads
      More>
      Web Effects
      Website Source Code
      Website Materials
      Front End Template
      About us Disclaimer Sitemap
      php.cn:Public welfare online PHP training,Help PHP learners grow quickly!