python-3.x - 如何将默认字典与列表中的值解析为独立字典
问题描述
试图解析一个 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 将这些值插入到数据库中。如果有人对我如何将默认字典(列表)插入 mysql 中的表有任何更好的建议 - 我将不胜感激。
解决方案
对我来说,答案在于嵌套在列表理解中的 dic 理解。请注意,这段代码依赖于输入,特别是一个字典,所有列表的长度都相同!
要测试它,请运行:
n = len(list(input.values())[0]
all_length_equal = all([len(v)==n for v in input.values()])
完成后,下面的代码将遍历每个 value ,获取 i-value ,并将 stores 放入字典中,尝试使用 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
推荐阅读
- arrays - Vigenere Cypher - 代码没有像我预期的那样工作
- ios - Swift - 如何将图像和文本添加到 UItextField 的左视图并让它们垂直均匀排列
- javascript - 从命令行 Node.js/js 解析多个参数
- c# - C# 中的 IBM Watson Tone Analyzer API 调用
- matlab - GUI图像故障
- java - Java Android - AsyncTask onPostExecute 没有被调用
- c - 'toupper' 和 'tolower' 对 C 中的 char 数组没有影响
- android - RatingBar 不显示“numStars”星
- node.js - 如何使用 nodeJs 修复“Oracle 客户端库的版本为 0.0,但必须为 11.2 或更高版本”
- javascript - 打字稿:在对象的多维数组中分组(按id)