如何将默认字典解析为独立字典的列表值

How do I parse a default dict with values that are lists into independent dicts

正在尝试解析 defaultdict(list)

输入:

defaultdict(class <'list'>,{'key1': ['v1', 'v2'], 'key2': [v3, v4], 'key3': ['v5', 'v6']})

期望输出:

list_dic = [{key1: v1, key2: v3, key3: v5}, {key1: v2, key2: v4, key3: v6}] 

必须对列表中的 n 个值起作用。

根据所需的输出,我打算使用 mysql executemany 将这些值插入到数据库中。如果有人对我如何将 deafaultdict(list) 插入 mysql 中的 table 有更好的建议 - 我将不胜感激。

对我来说,答案在于嵌套在列表理解中的字典理解。 请注意,这段代码依赖于输入,具体来说是一个字典,所有列表的长度都相同!

要进行测试,请 运行 :

n = len(list(input.values())[0]
all_length_equal = all([len(v)==n for v in input.values()])

完成后,下面的代码遍历每个值,提取 i 值,然后存储到字典中,用 0 试试:

{k:v[0] for k,v in input.items()}

然后你需要添加一个列表理解

[ i for for i in range(len(list(input.values())[0])]

以上将return一个范围内的数字。 但是如果你把两者结合起来,它会return第一个值的长度范围内的字典。

list_dic = [{
     k:v[i] for k,v in input.items() #This create the correct dictionnary with all the i-values in the input
} for i in range(len(list(input.values())[0])] # iterate through the length of the first list