如何删除此词典中没有str“id”的所有内容?

2024-06-26 02:00:32 发布

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

我需要某种循环或过滤器来删除每个不包含字符串“id”的条目

someDict = { 'id1': [('id1'), ('book'), ('sauce'), ('pencil')],
             'id2': [('id2'), ('id4'),  ('id5'), ('pens') , ('id6'), ('stuff')],
             'id3': [('id3'), ('id81'), ('van'), ('garage')]}

因此,之后,它将看起来像这样:

someDict = { 'id1': [('id1')],
             'id2': [('id2'), ('id4'), ('id5'), ('id6')],
             'id3': [('id3'), ('id81') ]}

我简直是不知所措。我已经想了三个小时了。任何帮助都将不胜感激

我试过这个,但我不擅长使用这样的过滤器。它应该删除字典中没有“id”的所有内容,但它不起作用

#someDict = { k : v for k, v in someDict.items() if 'id' in v }

然后,我试图找出一个循环,但也无法让它工作

for key, value in someDict.items():
    for x in value:
        if not "id" in x:
            value.remove(x)```

Tags: inid过滤器forifvalueitemsid3
2条回答

这应该起作用:

{k: [e for e in v if 'id' in e] for k, v in someDict.items()}

我不知道你为什么在清单里写括号。如果要创建元组,请确保在元组末尾添加一个,,如下所示:('id1',)。如果这是你想要做的,考虑这个代码代替:

someDict = { 'id1': [('id1',), ('book',), ('sauce',), ('pencil',)],
             'id2': [('id2',), ('id4',),  ('id5',), ('pens',) , ('id6',), ('stuff',)],
             'id3': [('id3',), ('id81',), ('van',), ('garage',)]}

id_dict = {k: [e for e in v if 'id' in e[0]] for k, v in someDict.items()}

试试这个:

for value in someDict.values():
    for i in value:
        if i[0:2] != 'id':
            value.remove(i)

您不需要迭代完整的项(键和值),只需获取所有值,然后检查每个值元素的条件

相关问题 更多 >