Python: 如何从字典中删除与键完全匹配的值?
Python: how to remove a value from a dict if it exactly matches the key?
因为键有多个值,我想删除与键本身相同的值?也就是说,我有一个字典 jumps
:
jumps = {'I6': ['H6', 'I6', 'I5'], 'T8' : ['T6', 'S6', 'T8']}
并且我想从 'I6'
键中删除值 'I6'
并从 'T8'
键中删除值 'T8'
。我怎么能这样做?我在解析字符串与值时混淆了。
您可以将单行与词典理解和列表理解结合使用:
result = {<b>k</b>:[vi for vi in <b>v</b> if <b>k</b> != vi] for <b>k,v</b> in jumps.items()}
这导致:
>>> {k:[vi for vi in v if k != vi] for k,v in jumps.items()}
{'T8': ['T6', 'S6'], 'I6': ['H6', 'I5']}
请注意,您将从列表中删除等于键的 所有 元素。此外,删除过程是针对 all 键完成的。
代码的工作原理如下:我们遍历 jumps
字典中的每个 key-value 对 k,v
。然后对于 每个 这样的对,我们在生成的字典中构造一个键,并将 [vi for vi in v if k != vi]
与之相关联。这是一个列表理解,我们过滤掉所有 v
等于 k
的值。所以只有 vi
保留(按此顺序)是 k != vi
.
适合我
jumps = {'I6': ['H6', 'I6', 'I5'], 'T8' : ['T6', 'S6', 'T8']}
key = 'I6'
if key in jumps[key]:
jumps[key].remove(key)
print(jumps)
有一个名为 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)
另一种可能的方式可能是:
{vals.remove(val) for key,vals in jumps.items() for val in vals if val == key}
因为它引用值列表或数组,从列表中删除将影响 jumps
的值。
for key in jumps:
jumps[key].remove(key)
因为键有多个值,我想删除与键本身相同的值?也就是说,我有一个字典 jumps
:
jumps = {'I6': ['H6', 'I6', 'I5'], 'T8' : ['T6', 'S6', 'T8']}
并且我想从 'I6'
键中删除值 'I6'
并从 'T8'
键中删除值 'T8'
。我怎么能这样做?我在解析字符串与值时混淆了。
您可以将单行与词典理解和列表理解结合使用:
result = {<b>k</b>:[vi for vi in <b>v</b> if <b>k</b> != vi] for <b>k,v</b> in jumps.items()}
这导致:
>>> {k:[vi for vi in v if k != vi] for k,v in jumps.items()}
{'T8': ['T6', 'S6'], 'I6': ['H6', 'I5']}
请注意,您将从列表中删除等于键的 所有 元素。此外,删除过程是针对 all 键完成的。
代码的工作原理如下:我们遍历 jumps
字典中的每个 key-value 对 k,v
。然后对于 每个 这样的对,我们在生成的字典中构造一个键,并将 [vi for vi in v if k != vi]
与之相关联。这是一个列表理解,我们过滤掉所有 v
等于 k
的值。所以只有 vi
保留(按此顺序)是 k != vi
.
适合我
jumps = {'I6': ['H6', 'I6', 'I5'], 'T8' : ['T6', 'S6', 'T8']}
key = 'I6'
if key in jumps[key]:
jumps[key].remove(key)
print(jumps)
有一个名为 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)
另一种可能的方式可能是:
{vals.remove(val) for key,vals in jumps.items() for val in vals if val == key}
因为它引用值列表或数组,从列表中删除将影响 jumps
的值。
for key in jumps:
jumps[key].remove(key)