使用列表列表作为查找表并更新新列表列表中的值

alk*_*key 5 python list

我有一个创建列表列表的应用程序。列表中的第二个元素需要使用查找列表进行分配,查找列表也包含一个列表列表。

我已经使用“所有”方法来匹配列表中的值。如果列表值存在于查找列表中,则它应更新新列表中的第二个位置元素。然而,这种情况并非如此。即使所有元素都存在于两个列表中,==比较符也会对所有元素产生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)

Mar*_*ers 4

您无法使用 执行您想要的操作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)