Python:如果它与键完全匹配,如何从dict中删除一个值?

Cor*_*man 7 python dictionary list frame

因为密钥有多个值,我想删除与密钥本身相同的密钥?也就是说,我有一本字典jumps:

jumps = {'I6': ['H6', 'I6', 'I5'], 'T8' : ['T6', 'S6', 'T8']}
Run Code Online (Sandbox Code Playgroud)

我想删除值'I6''I6'键也'T8''T8'关键.我怎么能这样做?我在解析字符串与值之间混淆了.

Wil*_*sem 9

您可以使用包含字典理解列表理解的单行程序:

result = {k:[vi for vi in v if k != vi] for k,v in jumps.items()}
Run Code Online (Sandbox Code Playgroud)

这导致:

>>> {k:[vi for vi in v if k != vi] for k,v in jumps.items()}
{'T8': ['T6', 'S6'], 'I6': ['H6', 'I5']}
Run Code Online (Sandbox Code Playgroud)

请注意,您将从列表中删除与键相同的所有元素.此外,对所有键执行删除过程.

代码的工作原理如下:我们迭代字典中的每个键值对.然后,对于每个这样的对,我们在结果字典中构造一个键,并与之关联.这是一个列表理解,我们过滤掉所有等于的值.所以只有s(按此顺序)仍然存在.k,vjumps[vi for vi in v if k != vi]vkvik != vi


Nei*_*eil 6

有一个内置命令,调用remove它会从列表中删除一个项目。我们可以从dictionary使用字符串键访问我们的元素开始。该值恰好是一个列表,然后我们可以在其上使用该remove命令。

这是您要演示的列表:

jumps = {
    'I6': [ # we are accessing this value that happens to be a list
        'H6',
        'I6', #then Python will sort for and remove this value
        'I5'
    ],
    'T8' : [
        'T6',
        'S6',
        'T8'
    ]
}



jumps = {'I6': ['H6', 'I6', 'I5'], 'T8' : ['T6', 'S6', 'T8']}

jumps['I6'].remove('I6')
jumps['T8'].remove('T8')
print(jumps)
Run Code Online (Sandbox Code Playgroud)


Ste*_*ann 5

for key in jumps:
    jumps[key].remove(key)
Run Code Online (Sandbox Code Playgroud)