我正在扩展名为projects
的列表,以包含来自其他列表的项目所有者。 Projects_with_owner
有两个匹配,正在返回None
。我假设因为None
元素是第一个匹配。如果有的话,我希望能够包含一个有名字的那个。我可以通过排序并确保任何名称首先出现,但我想知道是否有更好的方法。
Projects_with_owner = [['Project1', None],['Project1','Andrew']]
projects = [['Project1']]
for x in projects:
x.extend([[y[1]] for y in Projects_with_owner if y[0] == x[0]][0])
print projects
输出:
[['Project1', None]]
期望的输出:
[['Project1', 'Andrew']]
答案 0 :(得分:3)
for x in projects:
x.extend([[y[1]] for y in Projects_with_owner if y[0] == x[0] and y[1] is not None][0])
你可以提供你想要的东西,但是当只有一个匹配时,这并不会扩展你的清单。所以也许你应该创建一个临时列表,其中包含与项目的所有匹配项,如果有多个匹配项,则创建一个临时列表,获取具有任何所有者的匹配项。
答案 1 :(得分:1)
我可能会这样做:
for project in projects:
project.extend([orig_project[1] for orig_project in Projects_with_owner if
orig_project[1] is not None and
orig_project[0] == project[0]])
请注意,这将为您提供
[['Project1', ['Andrew']]]
但是允许您拥有多个所有者。