给定一个列表,其中包含长度为 n 的列表中未排序的索引。列表的每个元素只包含一次。 所以列表看起来像这样
L = [13, 145, 70001, 34, ..., 533]
还给出了一个字典d,其中数值作为键。所有值都是元素 {0,1}。喜欢
d = {
"[some data]" : 0,
"[some data]" : 1,
"[some data]" : 1,
"[some data]" : 1,
...
"[some data]" : 0
}
字典 d 中的条目比列表 L 中的条目多得多。
我想做的是从 L 中的每个位置(索引)删除字典中的数据(如果它是 0)。
我在处理它时看到的问题是,在每次删除之后,索引都需要移动,因为字典中的位置正在改变。对于 L 中的大量项目,这是非常低效的。必须有一种有效的方法来执行此任务。
非常感谢任何想法和建议!
请您参考如下方法:
请注意,您不应该像大多数人一样期望能够做到这一点 dictionary实现没有排序,但 Python 的是 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}
