【发布时间】:2014-09-13 21:04:45
【问题描述】:
我正在尝试合并两个列表,base 和 override,其中 base 应该是一个更大的列表,override 是 base 中的一个子集。在元素重叠的地方,我希望base 中的对象被override 中的对象覆盖。每个列表中的对象都是命名元组,其中有属性al2000 和de2000。此外,当对象具有相同的 al2000 和 de2000 值时,我想将它们视为“相同”。我所拥有的(似乎可行)如下,但这有嵌套循环,我想知道是否有更好的方法来做到这一点。
# Part of a function
final = []
for i in base:
if all((i.al2000, i.de2000) != (k.al2000, k.de2000) for k in override):
final.append(i)
else:
for k in override:
if (i.al2000, i.de2000) == (k.al2000, k.de2000):
final.append(k)
return final
【问题讨论】:
-
在哪种情况下,您实际上会用覆盖中的项目覆盖基础中的项目?似乎您只想附加缺少的项目。
标签: python python-2.7