从字典中的值列表中删除值

Bee*_*Gee 1 python dictionary python-2.7

我在Windows 7中使用Python 2.7.

我有一个字典,并希望从另一个字典中删除与(键,值)对相对应的值.

例如,我有一本字典t_dict.我想删除字典中的相应(键,值)对,values_to_remove以便我最终得到字典final_dict

t_dict = {
    'a': ['zoo', 'foo', 'bar'],
    'c': ['zoo', 'foo', 'yum'],
    'b': ['tee', 'dol', 'bar']
}

values_to_remove = {
    'a': ['zoo'],
    'b': ['dol', 'bar']
}

# remove values here

print final_dict
{
    'a': ['foo', 'bar'],
    'c': ['zoo', 'foo', 'yum'],
    'b': ['tee']
}
Run Code Online (Sandbox Code Playgroud)

我已经查看了关于SO和python词典文档的类似页面,但找不到任何解决这个特定问题的东西:

https://docs.python.org/2/library/stdtypes.html#dict

如何从嵌套字典中删除具有重复值的字典

如何从python字典中删除一个键?

编辑

t_dict每个键中不能有重复的值.例如,永远不会有

t_dict['a'] = ['zoo','zoo','foo','bar']

Spa*_*ine 5

试试这个,

for k, v in t_dict.items():
    for item in values_to_remove.get(k, ()):
        v.remove(item) 

# Output
{'a': ['foo', 'bar'], 'c': ['zoo', 'foo', 'yum'], 'b': ['tee']}
Run Code Online (Sandbox Code Playgroud)

  • 你不应该在`if`里面循环去除`values_to_remove`中与`k`相关的所有值吗?或者通过组合检查和迭代来简化代码,`for k,v in t_dict.items():`,`for toremove in values_to_remove.get(k,()):`,`v.remove(toremove)`(这也避免了第二次不必要地查找`t_dict [k]`;你已经从`items`迭代中得到了它. (2认同)
  • @ShadowRanger,thx,这是一个优雅的解决方案. (2认同)