我有一个创建列表列表的应用程序。列表中的第二个元素需要使用查找列表进行分配,查找列表也包含一个列表列表。
我已经使用“所有”方法来匹配列表中的值。如果列表值存在于查找列表中,则它应更新新列表中的第二个位置元素。然而,这种情况并非如此。即使所有元素都存在于两个列表中,==比较符也会对所有元素产生False匹配。
我还尝试了各种索引查找命令组合,但它们无法解压缩每个列表的值。
我的代码如下。目标是用lookupList中的数字替换newData中的“ xxx”值。
lookupList= [['Garry','34'],['Simon', '24'] ,['Louise','13'] ]
newData = [['Louise','xxx'],['Garry', 'xxx'] ,['Simon','xxx'] ]
#Matching values
for i in newData:
if (all(i[0] == elem[0] for elem in lookupList)):
i[1] = elem[1]
Run Code Online (Sandbox Code Playgroud)
您无法使用 执行您想要的操作all(),因为elem不是生成器表达式之外的局部变量。
不使用列表,而是使用字典来存储lookupList:
lookupDict = dict(lookupList)
Run Code Online (Sandbox Code Playgroud)
查找匹配项是一个简单的恒定时间(快速)查找:
for entry in newData:
if entry[0] in lookupDict:
entry[1] = lookupDict[entry[0]]
Run Code Online (Sandbox Code Playgroud)