在Python中,如何将列表中的一个值与列表中的另一个值进行比较
我对python非常陌生,但我正在尝试比较Python2.7中的两个列表在Python中,如何将列表中的一个值与列表中的另一个值进行比较,python,list,Python,List,我对python非常陌生,但我正在尝试比较Python2.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 = [['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])
非常感谢 您可以使用字典理解功能将
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]]
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]]
更简单的是,字典可以用dict
函数构建,如下所示
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]]
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]]
如果您想使用基本但低效的方法,那么您可以这样做
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]]
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]]
您可以使用字典理解功能将
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]]
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]]
更简单的是,字典可以用dict
函数构建,如下所示
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]]
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]]
如果您想使用基本但低效的方法,那么您可以这样做
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]]
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]]
它有用吗?请正确缩进您的代码。此外,这些比较值在
reflist
中是否保证唯一?是的,比较值是唯一的,是否有效?请正确缩进代码。此外,这些比较值是否保证在reflist
中唯一?是的,比较值是唯一的ID