在Python 3中使用For If语句删除字典键

时间:2018-05-17 18:43:53

标签: python-3.x dictionary

我觉得这很愚蠢。如何使用引用值的if语句删除字典中的键。当我这样做时:

newdict = {"a":1,"b":2,"c":3}

for (key,value) in newdict:
    if value == 2:
        del newdict[key]
print(newdict)

它抛出了这个错误:

line 3, in <module>
    for (key,value) in newdict:
ValueError: not enough values to unpack (expected 2, got 1)

谢谢。

1 个答案:

答案 0 :(得分:1)

如果您需要根据商品值进行删除,请使用items()方法,否则它会提供ValueError。但请记住,如果你这样做,它会给RuntimeError。发生这种情况是因为newdict.items()返回迭代器而不是list。因此,将newdict.items()转换为list,它应该有效。改变上面的代码如下 -

for key,value in list(newdict.items()):
    if value == 2:
        del newdict[key]

输出 -

{'a': 1, 'c': 3}