我对python很新,但我试图比较Python 2.7中的两个列表列表。
testlist = [['asd', 7],['bla', 5],['hi', 3]]
reflist = [[1, 576 ],[2, 832],[3, 123],[4, 412],[5, 948],[6, 14],[7, 2],[8, 76],[9, 79]]
所以期望的输出是这样的:
testlist = [['asd', 7, 2],['bla', 5, 948],['hi', 3, 123]]
只有当第一个值与testlist中每个列表的第二个值匹配时,才在reflist中附加每个列表的第二个值...可能是这样的吗?
for l in testlist:
if l[1] in b[0] for b in reflist:
l.append(b[1])
非常感谢!
答案 0 :(得分:4)
您可以使用字典理解转换reflist
字典,并且查找将更容易,更快,就像这样
d = {item1:item2 for item1, item2 in reflist}
print [item + [d.get(item[1])] for item in testlist]
# [['asd', 7, 2], ['bla', 5, 948], ['hi', 3, 123]]
更简单的是,字典可以使用dict
函数构建,就像这样
d = dict(reflist)
如果你想使用基本但效率低下的方法,那么就可以这样做
for item in testlist:
for number1, number2 in reflist:
if number1 == item[1]:
item.append(number2)
break
print testlist
# [['asd', 7, 2], ['bla', 5, 948], ['hi', 3, 123]]
这会就地更改列表。如果您不想这样做,可以
result = []
for item in testlist:
temp = item[:]
for number1, number2 in reflist:
if number1 == item[1]:
temp.append(number2)
result.append(temp)
break
else:
result.append(temp)
print result
# [['asd', 7, 2], ['bla', 5, 948], ['hi', 3, 123]]