如何遍历包含列表的dict值并删除项?

2024-05-17 03:44:43 发布

您现在位置:Python中文网/ 问答频道 /正文

这里是Python新手。我有一本清单字典,就像这样:

d = {
  1: ['foo', 'foo(1)', 'bar', 'bar(1)'],
  2: ['foobaz', 'foobaz(1)', 'apple', 'apple(1)'],
  3: ['oz', 'oz(1)', 'boo', 'boo(1)']
}

我试图找出如何循环遍历字典的键和相应的列表值,并用parantesses尾部删除列表中每个键中的所有字符串。到目前为止,这就是我所拥有的:

for key in keys:
    for word in d[key]...: # what else needs to go here?
        regex = re.compile('\w+\([0-9]\)')
        re.sub(regex, '', word)  # Should this be a ".pop()" from list instead?

我想用列表理解来完成这项工作,但是正如我所说的,我找不到很多关于在dict键和列表的相应dict值之间循环的信息。最有效的方法是什么?


Tags: keyinreapple列表for字典foo
3条回答

或者,你可以不用重新编译字典,如果字典很大的话,这可能会更好。。。

for k, v in d.iteritems():
   d[k] = filter(lambda x: not x.endswith(')'), v)
temp_dict = d
for key, value is temp_dict:
    for elem in value:
        if temp_dict[key][elem].find(")")!=-1:
            d[key].remove[elem]

在列表上迭代时无法编辑该列表,因此可以将列表的副本创建为temp_list,如果在列表中找到括号尾部,则可以从原始列表中删除相应的元素。

您可以重新构建字典,只允许不带括号的元素通过:

d = {k:[elem for elem in v if not elem.endswith(')')] for k,v in d.iteritems()}

相关问题 更多 >