python - 列表理解比较两个不同的列表

标签 python list-comprehension

我有两个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/

相关文章:

python - 改组 SQLAlchemy 结果?

python - 为什么此类中的列表理解对某些方法有效,而对其他方法无效?

python - 来自列表理解的结果顺序是否得到保证?

python - 如何将两个 for 循环合并到列表理解中

java - 在 Python 中创建 Java DataInputStream 数据

python - 如何在无法访问互联网的 Unix 服务器 (Solaris x86) 上安装 pandas 0.24?

python - 在python中,访问另一个文件中一个文件的全局变量

python - 如何计算元素的值(value)?

python - 使用 numpy delete 和 enumerate 时索引错误

列表理解中的 Python 语法错误?