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

2024-06-26 01:37:52 发布

您现在位置:Python中文网/ 问答频道 /正文

因为这个键有多个值,我想删除一个和键本身相同的值?也就是说,我有一本字典jumps

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

我想从'I6'键中删除'I6'值,同时从'T8'键中删除{}。我怎么能这么做?我在解析字符串和值的时候搞混了。在


Tags: 字符串字典s6i5和键t6jumpsh6
3条回答

有一个内置命令,名为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)

您可以使用一个一行字典理解列表理解

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

这将导致:

^{pr2}$

请注意,您将从列表中移除与键相等的所有元素。此外,对所有键执行移除过程。在

代码的工作方式如下:我们遍历jumps字典中的每个键值k,v。然后对于每个这样的对,我们在生成的字典中构造一个键,并将[vi for vi in v if k != vi]与之关联。这是一个列表理解,我们过滤掉v中等于k的所有值。因此,只有vi保留(按该顺序)k != vi。在

for key in jumps:
    jumps[key].remove(key)

相关问题 更多 >