Python列表排除

时间:2010-01-22 15:59:15

标签: python

我有一个包含var1=varavar1=varbvar2=vara等信息的列表字典。这可能有很多条目,我打印出来就像这样

for y in myDict:  
    print(y+"\t"+myDict[y])

我有另一个列表,其中包含类似于var2,var3等的排除项。这可能有< 10个条目,我可以像这样打印

for x in myList:
    print(x)

现在我想删除字典中键值为列表值的键值对。我试过这个

for x in myList:
    for y in myDict:
        if x != y: print(y+"\t"+myDict[y])

但是在每次通过列表时,它会让所有其他人从当前的`x到屏幕

如果列表中存在密钥,是否有一种很好的python方法可以从字典中删除密钥对?

2 个答案:

答案 0 :(得分:5)

你的意思是

for key in myDict:
    if key not in myList:
        print(key+"\t"+myDict[key])

或许多替代品之一:

for key in (set(myDict)-set(myList)):
    print(key+"\t"+myDict[key])

答案 1 :(得分:1)

mySet = set(myList)
myNewDict = dict(((k, v) for k, v in myDict if k not in mySet))

请注意,除非myList包含大量条目,否则使用mySet代替myList不是问题。