如何从字典中删除列表值?

ust*_*etz 3 python dictionary

给出一个列表作为值的字典.

myDict = {0: [0, 1, 2], 1: [], 2: [20, 25, 26, 28, 31, 34], 3: [], 4: [0, 1, 2, 3, 4, 7, 10], 5: [], 6: [10, 20, 24]}
Run Code Online (Sandbox Code Playgroud)

如果值列表为空,如何从字典中删除项目?

我试图遍历字典并删除项目,但在迭代期间不允许更改字典大小.

for item in myDict:
    if myDict[item] == []:
        print item
        del myDict[item]
Run Code Online (Sandbox Code Playgroud)

fal*_*tru 5

使用dict理解:

>>> myDict = {0: [0, 1, 2], 1: [], 2: [20, 25, 26, 28, 31, 34], 3: [], 4: [0, 1, 2, 3, 4, 7, 10], 5: [], 6: [10, 20, 24]}
>>> myDict = {k: v for k, v in myDict.items() if v}
>>> myDict
{0: [0, 1, 2], 2: [20, 25, 26, 28, 31, 34], 4: [0, 1, 2, 3, 4, 7, 10], 6: [10, 20, 24]}
Run Code Online (Sandbox Code Playgroud)

迭代时不允许添加,删除字典条目.制作钥匙的副本以克服它.例如,在下面,我曾经tuple(myDict)获得密钥的副本.

>>> myDict =  {0: [0, 1, 2], 1: [], 2: [20, 25, 26, 28, 31, 34], 3: [], 4: [0, 1, 2, 3, 4, 7, 10], 5: [], 6: [10, 20, 24]}
>>> for item in tuple(myDict):
...     if myDict[item] == []:
...         del myDict[item]
...
>>> myDict
{0: [0, 1, 2], 2: [20, 25, 26, 28, 31, 34], 4: [0, 1, 2, 3, 4, 7, 10], 6: [10, 20, 24]}
Run Code Online (Sandbox Code Playgroud)