【发布时间】:2017-01-29 09:08:21
【问题描述】:
我想将 python 字典转换为包含所有可能的键值对的列表。例如,如果 dict 是这样的:
{
"x": {
"a1": { "b": {
"c1": { "d": { "e1": {}, "e2": {} } },
"c2": { "d": { "e3": {}, "e4": {} } }
}
},
"a2": { "b": {
"c3": { "d": { "e1": {}, "e5": {} } },
"c4": { "d": { "e6": {} } }
}
}
}
}
我想要一个类似的列表:
[
{ "x": "a1", "b": "c1", "d": "e1" },
{ "x": "a1", "b": "c1", "d": "e2" },
{ "x": "a1", "b": "c2", "d": "e3" },
{ "x": "a1", "b": "c2", "d": "e4" },
{ "x": "a2", "b": "c3", "d": "e1" },
{ "x": "a2", "b": "c3", "d": "e5" },
{ "x": "a2", "b": "c4", "d": "e6" }
]
我正在努力编写递归函数。 我已经写了这个,但它不起作用
def get_list(groups, partial_row):
row = []
for k, v in groups.items():
if isinstance(v, dict):
for k2, v2 in v.items():
partial_row.update({k: k2})
if isinstance(v2, dict):
row.extend(get_list(v2, partial_row))
else:
row.append(partial_row)
return row
【问题讨论】:
-
那么你自己到目前为止写了什么?
-
请edit您的问题添加详细信息,请勿在评论中添加。
标签: python list dictionary flatten