从字典中删除索引

问题描述 投票:1回答:3

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

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

还给出了dictionary d,其数值为关键。所有值都是元素{0,1}。喜欢

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

字典d中有更多条目,然后在列表L中。

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

在进行每次删除之后我看到的问题是,由于字典中的位置正在改变,因此需要移动索引。对L的大量物品来说,这是非常低效的。必须有一种有效的方法来完成这项任务。

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

python list dictionary indexing processing-efficiency
3个回答
6
投票

请注意,您不应该期望能够这样做,因为大多数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}

0
投票

dictionary.keys()dictionary.values()都返回python 2中的可索引列表

正如@grooveplex所指出的那样,在python 3中,你可以使用list()将每个包装起来以获得相同的效果


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.