Python-从字典中删除字典中的空列表

时间:2018-02-01 20:01:15

标签: 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)

所以,我的问题是这段代码为每个s创建了一个列表。然后,如果满足某个条件,则该列表中包含元素。但是,如果未满足此条件,则列表仍为空。 而这个事实,空列表,在以下计算中导致我严重的问题,因此我需要删除该列表。

总结一下,我需要从中获取:

编辑:

0: {0.0: [0.10000000000000001, 0.30000000000000004], 0.10000000000000001: []}, 1:...

为:

0: {0.0: [0.10000000000000001, 0.30000000000000004], 0.10000000000000001:}, 1:....

我有什么办法吗?我尝试了.remove()del,但我没有工作。

2 个答案:

答案 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

无需删除它们。