通过查看字典中的值来识别键 我有一个包含键值对的字典,比如{a:(b,c,d,e)} 如果我遇到一个元组(b,c,d,e),我想在字典中查找与值具有相同元组的键,并从字典中删除该键。在python中可以这样做吗

通过查看字典中的值来识别键 我有一个包含键值对的字典,比如{a:(b,c,d,e)} 如果我遇到一个元组(b,c,d,e),我想在字典中查找与值具有相同元组的键,并从字典中删除该键。在python中可以这样做吗,python,Python,使用list()、set()或tuple(),因为list(dict)或tuple(dict)或set(dict)返回字典的键,您可以迭代这些返回的键并从字典中弹出项, 正如Lattyware所建议的,要在删除一个值后停止迭代,请在pop()之后使用break语句 {a[b,c,d,e]}不是字典,[b,c,d,e]不是元组。sryy…我的错。a是键,元组[b,c,d,e]是该键的值OK,因此您有一个元组(b,c,d,e),您想在字典中找到该值,然后删除该键/值对?是的,没错。我在字典里有很多词

使用
list()
set()
tuple()
,因为
list(dict)
tuple(dict)
set(dict)
返回字典的键,您可以迭代这些返回的键并从字典中弹出项, 正如Lattyware所建议的,要在删除一个值后停止迭代,请在
pop()之后使用
break
语句


{a[b,c,d,e]}
不是字典,
[b,c,d,e]
不是元组。sryy…我的错。a是键,元组[b,c,d,e]是该键的值OK,因此您有一个元组
(b,c,d,e)
,您想在字典中找到该值,然后删除该键/值对?是的,没错。我在字典里有很多词条,我必须在整本字典里搜索多次。有没有一种有效的方法可以加快搜索速度?字典的要点是查找一个键并获得一个值。如果您试图快速查找某个值,则说明您的字典是反向构造的。不,我不想在遇到匹配项时删除所有键/值对。我只想为每个匹配删除一个。例如,如果我有{a:[b,c,d,e]},{b:[b,c,d,e]},{c:[b,c,d,e]},{d:[b,c,d,e]}并且遇到(b,c,d,e)元组,我只想删除一个条目,即{a:[b,c,d,e]}。如果我下次遇到元组(b,c,d,e),我想删除另一个条目,如{b:[b,c,d,e]},等等……除了问题不清楚之外,我不明白为什么你要在这里选择
set
。。。既然键已经是唯一的,那么与
列表
相比有什么区别/优势呢?@agf在3.x中,dict视图会随着dict的变化而变化,因此在迭代时会收到一个错误。这是针对这种情况的保护,通过创建一个新的集合,它不依赖于dict。@rockluke您只需在
pop()
之后添加一个
break
,即可对该集合执行所需操作。尽管DICT没有顺序,但它将是一个任意值。@Lattyware,因为创建
集合
比创建
列表
元组
的开销更大。
div={'a':(1,2,3,4),'b':[1,2],'c':(1,2,3,4)}
tup=(1,2,3,4)
for x in set(div):
    if div[x]==tup:
        div.pop(x)

print(div)        

{'b': [1,2]}