我是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]]
通过仅在第一个值与测试列表中每个列表的第二个值匹配时才在引用列表中附加每个列表的第二个值……也许是这样的吗?
for l in testlist:
if l[1] in b[0] for b in reflist:
l.append(b[1])
非常感谢 !
您可以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]]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句