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

标签 python list dictionary frame

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

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

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

最佳答案

您可以使用 one-liner 同时具有字典理解列表理解:

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']}

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

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

关于Python:如果它与键完全匹配,如何从字典中删除一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42894508/

相关文章:

python - 如何在python中将float值的精度提高到10以上?

python - 如何过滤 Django QuerySet 的相关字段' 'all' 或 'none'

vb.net - 如何制作我的列表的深拷贝

css - 带有内联对的定义列表

c# - 将 IOrderedEnumerable<KeyValuePair<string, int>> 转换为 Dictionary<string, int>

java - HashMap中put()的返回值

Python 类型错误 : only integer scalar arrays can be converted to a scalar index

python - 什么是 __multicall__ 参数以及为什么不推荐使用它?

list - 如何从 tcl 中的列表中删除列表

javascript - openlayers3移动功能,3.14以上版本不起作用