我有两个namedtuble A和B列表。命名字段有名称、城市、河流、州、公园、学校等。 如果 A 中的元素和 B 中的元素匹配,我需要返回更新的元组。这是我的代码:
def update_values(A, B):
''' update A fields with B fields
'''
for n, a in enumerate(A):
for b in B:
if a.name == b.name :
a = a._replace(city = b.city, state = b.state, river=b.river)
A[n] = a
break
return A
我想知道是否有更多的Pythonic方法可以做到这一点,可能是列表理解。
最佳答案
这应该有效:
def update_values(A, B):
Bs = { b.name: b for b in B }
return [ a if a.name not in Bs else a._replace(city=Bs[a.name].city, state=Bs[a.name].state, river=Bs[a.name].river) for a in A ]
关于python - 列表理解比较两个不同的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59358610/