Skip to main content
 首页 » 编程设计

python之如何从字典中删除某些项目

2025年05月04日20mfrbuaa

我正在尝试过滤存储在字典中的来自服务器的响应。 字典包含列表。我想删除每个键中列表不包含 5 个项目的每个列表。

我试过这样的代码

def mutate_res(dic): 
    for key in dic.keys(): 
        for response in dic[key]: 
            if len(response) != 5: 
                dic[key].remove(response) 
    return dic 

我希望 dic[value] 只包含包含 5 个项目的列表,但它不起作用,它可能有 3 个或 5 个项目

请您参考如下方法:

您获得删除和删除它们的 key :

def mutate_res(dic): 
    delete_me = [ k for k in dic if len(dic[k])!=5] 
    for k in delete_me: 
        del dic[k]  
    return dic 

这不会在迭代时删除任何内容,因此这样做是安全的。


误读了您的数据结构 - 要删除长度为 != 5 的内部列表,您可以这样做:

def mutate_res(dct): 
    delete_me = [ k for k in dct if any(len(inner)!=5 for inner in dct[k])] 
    for k in delete_me: 
        dct[k] = [inner for inner in dct[k] if len(inner) == 5] 
    return dct 
 
d = {1: [ [1,],[1,2],[1,2,3],[1,2,3,4],[1,2,3,4,5]]} 
 
print(mutate_res(d)) # {1: [[1, 2, 3, 4, 5]]}