我正在尝试过滤存储在字典中的来自服务器的响应。 字典包含列表。我想删除每个键中列表不包含 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]]}
