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

时间:2017-03-20 01:30:02

标签: python list dictionary frame

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

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

我想从'I6'键中删除值'I6',并从'T8'键中删除'T8'。我怎么能这样做?我在解析字符串与值时混淆了。

5 个答案:

答案 0 :(得分:9)

您可以将单行词典理解列表理解结合使用:

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

这导致:

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

请注意,您将从列表中删除等于该键的所有元素。此外,删除过程是针对所有键完成的。

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

答案 1 :(得分:5)

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

答案 2 :(得分: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)

答案 3 :(得分:0)

为我工作

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

key = 'I6'

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

print(jumps)

答案 4 :(得分:0)

另一种可能的方式可能是:

{vals.remove(val) for key,vals in jumps.items() for val in vals if val == key}

由于它引用了值列表或数组,因此从列表中删除将影响jumps的值。