通过查看字典中的值来识别键 我有一个包含键值对的字典,比如{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]}