从字典中删除索引
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 记录
给定的是一个列表,其中包含长度为 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 记录