因为密钥有多个值,我想删除与密钥本身相同的密钥?也就是说,我有一本字典jumps
:
jumps = {'I6': ['H6', 'I6', 'I5'], 'T8' : ['T6', 'S6', 'T8']}
我想从'I6'
键中删除值'I6'
,并从'T8'
键中删除'T8'
。我怎么能这样做?我在解析字符串与值时混淆了。
答案 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
的值。