我有一个字典,其中包含另一个包含列表的字典。我知道这是一场噩梦,但我会用它来正确分类。
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)
所以,我的问题是这段代码为每个s创建了一个列表。然后,如果满足某个条件,则该列表中包含元素。但是,如果未满足此条件,则列表仍为空。 而这个事实,空列表,在以下计算中导致我严重的问题,因此我需要删除该列表。
总结一下,我需要从中获取:
编辑:
0: {0.0: [0.10000000000000001, 0.30000000000000004], 0.10000000000000001: []}, 1:...
为:
0: {0.0: [0.10000000000000001, 0.30000000000000004], 0.10000000000000001:}, 1:....
我有什么办法吗?我尝试了.remove()
和del
,但我没有工作。
答案 0 :(得分:2)
您可以使用递归来删除值为空列表的键值对:
d3.selectAll('text.<classname>')
输出:
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}
答案 1 :(得分:2)
仅为首先包含内容的列表添加关键字:
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
无需删除它们。