假设我有一个嵌套的字典,在某种程度上,终端值是列表。例如:
nested_dict = {1 : {'a' : [1,2,3], 'b' : [4,5]},
2 : {'a' : [6], 'b' : [7,8,9]}}
我想将列表值聚合到[1,2,3,4,5,6,7,8,9]
中。我有两个级别
values = []
for key1 in nested_dict.keys():
for key2 in nested_dict[key1].keys():
for value in nested_dict[key1][key2]:
values.append(value)
如何使其更紧凑,并能够处理任意级别?也就是说,我知道所有列表都处于同一级别,但是我不知道它的深度,所以在我提供的代码中,我实际上需要不确定数量的for循环。
不是how to extract multi level dictionary keys/values in python的重复项,因为它们最多显示两个级别。
答案 0 :(得分:3)
您可以使用递归:
nested_dict = {1 : {'a' :[1,2,3], 'b': [4,5]}, 2 : {'a' : [6], 'b' : [7,8,9]}}
def get_lists(d):
r = [b if isinstance(b, list) else get_lists(b) for b in d.values()]
return [i for b in r for i in b]
输出:
[1, 2, 3, 4, 5, 6, 7, 8, 9]