尝试解析defaultdict(列表)
输入:
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的表中有更好的建议-我将不胜感激。
答案 0 :(得分:0)
对我来说,答案就在于列表理解嵌套的dic理解。 请注意,这段代码特别依赖于字典,所有列表的长度相同!
要进行测试,请运行:
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])]
以上将返回一个数字范围。 但是,如果将两者结合起来,它将返回字典中i值在第一个值的长度范围内。
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