然后再整成 list。或者直接用 list,id 当索引(范围可控的话,不可控就存个 id 到 list 的索引)
不会比 pandas 差。
starsriver
2019-07-15 12:40:38 +08:00
定义 namebuff 和 agebuff 一维数组,用 id 作为序号索引。更新数据只需要把提取的 list 组合进去就好
txy3000
2019-07-15 12:44:53 +08:00
直接上代码 def func(l): return {e['id']: e for e in l} l1 = [{'id': 1, 'name': 'one'}, {'id': 2, 'name': 'two'}] l2 = [{'id': 1, 'age': 18}, {'id': 2, 'age': 17}]
d1, d2 = func(l1), func(l2)
l3 = list(dict(d1[i].items() | d2[i].items()) for i in d1.keys() & d2.keys())
lance86
2019-07-15 12:54:24 +08:00
用列表推导式?不过其实也是嵌套的 for 循环,, [{'id': item1['id'], 'name': item1['name'], 'age': item2['age']} for item1 in list1 for item2 in list2 if item1['id'] == item2['id']]
goofool
2019-07-15 13:57:39 +08:00
print(list1, list2) list3 = copy.copy(list1) [x[0].update(x[1]) for x in zip(list3, list2)] print(list3)
rrfeng
2019-07-15 14:13:10 +08:00
result = [] index = {} c = 0
for i in list1+list2: index[i['id']] = c if not resut[c]: result[c] = i else: result[c].update(i) c++