以下代码有点来自更大的部分。 lines是2D列表,keyss是1D列表。行中的所有元素与keyss的长度相同。
datadict = []
for element in lines:
for index in range(len(element)):
datadict.append({keyss[index]: element[index]})
我想知道是否有一种使用字典理解来写这个的方法?这更像是一个奇怪的问题,因为所显示的代码对于我正在做的事情来说效果很好。我一直在努力,也无法找到方法。如果你可以查看它看起来有点像这样的语法,谢谢!
编辑#1:
通过阅读回复,我意识到它并没有真正发挥作用。我试图做一个列表理解,其中每个元素都是字典理解。我不完全确定这是否可能。我想创建一个字典列表,其中我获取keyss中的每个元素,并匹配一行中列表中元素的索引,如果这是有意义的话。
编辑#2:编辑#2: 我发现data_list = [{keyss[i]:row[i] for i in range(len(keyss))} for row in lines]
可以正常工作。
答案 0 :(得分:1)
字典理解创建字典。你想要一个列表理解:
datalist = [{keyss[index]:element[index]}) for element in lines
for index in range(len(element))]
您可以找到有关here语法的文档。
答案 1 :(得分:1)
您当前的代码没有创建字典,但如果这是您的意图,可以通过
完成dict(zip(keyss, elements))
或词典理解
{key: value for key, value in zip(keyss, elements)}
答案 2 :(得分:0)
正如eugene所提到的那样,它将是列表理解而不是dict理解。您可以使用zip()
进一步简化代码,因为您需要与同一索引对应的element
和keyss
列表。因此,您的简化列表理解表达式应为:
datalist = [{k: e} for elements in lines for e, k in zip(elements, keyss)]