Python从字典中删除字典中的空列表
我有一本词典,其中包含另一本包含列表的词典。我知道这是一场噩梦,但我用它来正确分类Python从字典中删除字典中的空列表,python,list,dictionary,Python,List,Dictionary,我有一本词典,其中包含另一本包含列表的词典。我知道这是一场噩梦,但我用它来正确分类 L = {} for s in range(N): L[s] = {} for a in A[s]: L[s][a] = [] for i in x: if (whatever condition for i): L[s][a].append(i) 所以,我的问题是,这段代码为每个a为每个s创建了一个列表。然
L = {}
for s in range(N):
L[s] = {}
for a in A[s]:
L[s][a] = []
for i in x:
if (whatever condition for i):
L[s][a].append(i)
所以,我的问题是,这段代码为每个a为每个s创建了一个列表。然后,如果满足了某个条件,那么该列表将充满元素。但是,如果不满足此条件,列表将保持为空。
这个事实,空列表,在下面的计算中给我带来了严重的问题,所以我需要删除这个列表
总而言之,我需要从以下方面获得:
编辑:
致:
我有办法吗?我尝试了
.remove()
和del
,但没有成功。可以使用递归删除值为空列表的键值对:
s = {0: {0.0: [0.10000000000000001, 0.30000000000000004], 0.10000000000000001: []}}
def new_s(s):
return {a:(b if not isinstance(b, dict) else new_s(b)) for a, b in s.items() if b}
输出:
{0: {0.0: [0.1, 0.30000000000000004]}}
可以使用递归删除值为空列表的键值对:
s = {0: {0.0: [0.10000000000000001, 0.30000000000000004], 0.10000000000000001: []}}
def new_s(s):
return {a:(b if not isinstance(b, dict) else new_s(b)) for a, b in s.items() if b}
输出:
{0: {0.0: [0.1, 0.30000000000000004]}}
仅为首先包含内容的列表添加键:
L = {}
for s in range(N):
L[s] = {}
for a in A[s]:
for i in x:
if (whatever condition for i):
L[s].setdefault(a, []).append(i) # new list only if there is content
无需删除它们。仅为首先包含内容的列表添加键:
L = {}
for s in range(N):
L[s] = {}
for a in A[s]:
for i in x:
if (whatever condition for i):
L[s].setdefault(a, []).append(i) # new list only if there is content
无需删除它们。
{[]}
是一个包含列表的集合,该集合无效,因为列表不可散列。您能否澄清原始输入的外观?@Ajax1234抱歉,出现了一个错误。@Ajax1234如果无法删除列表,是否可以删除存储该空列表的键?请提供,并注意明确输入和预期输出。因此,您有一个由浮点列表值的浮点键控的字典,并且您希望删除内部字典中任何以空列表作为值的键值对?{[]}
是一个包含列表的集合,该集合无效,因为列表不可散列。您能否澄清原始输入的外观?@Ajax1234抱歉,出现了一个错误。@Ajax1234如果无法删除列表,是否可以删除存储该空列表的键?请提供,并注意明确输入和预期输出。因此,您有一个由浮点数列表值的浮点数键控的字典,并且您希望删除内部字典中任何以空列表作为值的键值对?我不确定这是否需要递归<代码>{k1:{k2:v2代表k2,v2在v1.items()中如果v2}代表k1,v1在您的dict.items()中@AdamSmith您是对的,但是,我认为这种情况下的递归比嵌套字典理解更干净:)我不确定这是否需要递归<代码>{k1:{k2:v2代表k2,v2在v1.items()中,如果v2}代表k1,v1在您的_dict.items()中@AdamSmith您是对的,但是,我认为这种情况下的递归比嵌套字典理解更干净:)