例如,我们有2个词典列表
10
如果它们具有相同的fruit_id,我想用列表B更新列表A,因此对于此示例,列表A的颜色值将更改为绿色。有什么好的算法?
答案 0 :(得分:0)
a = [{'fruit_id':234, 'type':'apple', 'color':'red'}]
b = [{'fruit_id':235, 'type':'kiwi', 'color':'brown'},{'fruit_id':234, 'type':'apple', 'color':'green'}]
for fruit1 in b:
for fruit2 in a:
if fruit1['fruit_id'] == fruit2['fruit_id']:
fruit2['color'] = fruit1['color']
print a # --> [{'color': 'green', 'type': 'apple', 'fruit_id': 234}]
您可以遍历两个列表来实现它。
答案 1 :(得分:0)
在纯Python中,字典列表对于计算很昂贵。我建议您使用第三方库(例如Pandas)来实现矢量化功能。这是一个示例:
a = [{'fruit_id':234, 'type': 'apple', 'color': 'red'}]
b = [{'fruit_id':235, 'type': 'kiwi', 'color': 'brown'},
{'fruit_id':234, 'type': 'apple', 'color': 'green'}]
import pandas as pd
df_a = pd.DataFrame(a).set_index('fruit_id')
df_b = pd.DataFrame(b).set_index('fruit_id')
df_a.update(df_b)
res = df_a.reset_index().to_dict('records')
print(res)
[{'fruit_id': 234, 'color': 'green', 'type': 'apple'}]