3 回答
TA贡献1770条经验 获得超3个赞
你创建一个字典:
d1 = { m['compu_method']: m['aufloesung'] for m in l1}
一旦你有了它,它只是映射到新的问题:
for i, m in enumerate(l2):
l2[i]['aufloesung'] = d1.get(m['compu_method'], None)
应该做的伎俩...
TA贡献1810条经验 获得超4个赞
不使用其他模块,你可以试试这个:
for i in l2:
for j in l1:
if i['compu_method']==j['compu_method']:
i['aufloesung']=j['aufloesung']
输出:
[{'signal_name': 'XXXX', 'compu_method': 'ROTACC', 'min_wert': '-500', 'max_wert': '500', 'aufloesung': '1024'},
{'signal_name': 'YYYY', 'compu_method': 'TMPOUTS', 'min_wert': '-70', 'max_wert': '184', 'aufloesung': '1'},
{'signal_name': 'ZZZZ', 'compu_method': 'TMPOUTS', 'min_wert': '-70', 'max_wert': '184', 'aufloesung': '1'}]
TA贡献1820条经验 获得超9个赞
您可以先转换l1为字典:
l1_map = {x["compu_method"]: x["aufloesung"] for x in l1}
然后简单地更新l2(或重建一个新列表):
for d in l2:
d["aufloesung"] = l1_map[d["compu_method"]]
print(l2)
# [{'signal_name': 'XXXX', 'compu_method': 'ROTACC', 'min_wert': '-500', 'max_wert': '500', 'aufloesung': '1024'}, {'signal_name': 'YYYY', 'compu_method': 'TMPOUTS', 'min_wert': '-70', 'max_wert': '184', 'aufloesung': '1'}, {'signal_name': 'ZZZZ', 'compu_method': 'TMPOUTS', 'min_wert': '-70', 'max_wert': '184', 'aufloesung': '1'}]
或者更简洁的**语法:
[{**d, "aufloesung": l1_map[d["compu_method"]]} for d in l2]
这假设"compu_method"将出现在转换后的字典中。如果您认为可能会出现KeyError,那么使用@ssm 的答案中dict.get()所示的方法会更安全。
添加回答
举报
