从字典中删除索引

Deleting indices from dictionary

给定的是一个列表,其中包含长度为 n 的列表中的未排序索引。列表的每个元素只包含一次。 所以列表看起来像这样

L = [13, 145, 70001, 34, ..., 533]

还给出了一个dictionary d其中的数值作为key。所有值都是元素 {0,1}。喜欢

d = {
        "[some data]" : 0,
        "[some data]" : 1,
        "[some data]" : 1,
        "[some data]" : 1,
        ...
        "[some data]" : 0
    }

词典 d 中的条目比列表 L 中的条目多得多。

我想要做的是从 L 的每个位置(索引)的字典中删除数据,如果它是 0

我在处理它时看到的问题是,每次删除后,索引都需要移动,因为字典中的位置正在改变。对于 L 中的大量项目,这是非常低效的。必须有一种有效的方法来执行此任务。

非常感谢任何想法和建议!

请注意,您不应该期望能够像大多数 dictionary implementations are not ordered, but Python's is since 3.6 和 3.7 中的规范的一部分那样做到这一点 - 但问题是。

我们可以使用 enumerate 的字典推导式来制作新字典,这样我们就不必 担心 的索引转换业务担心你。

L_ = set(L)
d = {k: v for i, (k, v) in enumerate(dict.items()) if i not in L_ and v}

dictionary.keys()dictionary.values() 都是 return 可索引列表 python 2

正如@grooveplex 指出的那样,在 python 3 中,您可以用 list() 包裹每个,以获得相同的效果

我建议您不要直接删除该项目,而是使用例如更新它-1 最后删除所有 -1 记录