Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python从字典中删除字典中的空列表_Python_List_Dictionary - Fatal编程技术网

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您是对的,但是,我认为这种情况下的递归比嵌套字典理解更干净:)