Python遍历字典时动态删除指定元素的可行方案问询
有序遍历字典并动态批量删除元素的实现问题
我有如下字典:
my_dict = {1: ('a', 0, 10), 2: ('b', 3, 12), 3: ('a', 4, 15), 4: ('c', 3, 8), ...}
我需要按特定顺序遍历该字典,遍历过程中满足条件时批量删除多个字典元素(比如删除所有值为('a', *, *)的键),之后继续遍历剩余的有序项。
我尝试了两种实现方式,但都存在问题:
- 直接遍历字典本身,必要时删除元素。但Python中修改正在使用的迭代器是不推荐的,甚至可能无法正常执行。
- 遍历字典键的列表,这样不会修改迭代器本身,但删除元素后循环索引会失效,无法完成预期的遍历。
我觉得这种需求好像没法实现,是不是漏了什么方法?有没有可行的实现方式?Python第三方库中有没有符合需求的自定义类型?
补充示例
my_dict = {1: ("a", 0, 10), 2: ("b", 3, 12), 3: ("a", 4, 15), 4: ("c", 3, 8), 5: ('b', 3, 12), 6: ('c', 3, 8)} for k in list(my_dict): print(k) if k == 3: my_dict = {key: value for key, value in my_dict.items() if value[0] != 'c'} # 当前输出 # 1, 2, 3, 4, 5, 6 # 期望输出 # 1, 2, 3, 5(在第三次循环时删除所有值首元素为'c'的项)
内容的提问来源于stack exchange,提问作者user17033672
相关产品推荐
相关产品推荐

