词典理解查询

Inquiry on dictionary comprehension

下面的代码来自一个更大的部分。 lines 是一个二维列表,keys 是一个一维列表。 lines 中的所有元素与 keys 的长度相同。

datadict = []
for element in lines:
    for index in range(len(element)):
        datadict.append({keyss[index]: element[index]})

我想知道是否有一种使用字典理解来写这个的方法?这是一个更奇怪的问题,因为显示的代码对我正在做的事情来说工作得很好。我一直在努力,也找不到办法。如果你能复习一下它的语法,谢谢!

编辑#1:

阅读回复后,我意识到它并没有真正发挥作用。我正在尝试做一个列表理解,其中每个元素都是字典理解。我不完全确定这是否可能。我想制作一个字典列表,其中我获取 keys 中的每个元素并匹配 lines 中元素中索引的索引,这是一个列表,如果这有意义的话。

编辑#2: 我发现 data_list = [{keyss[i]:row[i] for i in range(len(keyss))} for row in lines] 可以工作。

字典理解创建字典。你想要一个 list 理解:

datalist = [{keyss[index]:element[index]}) for element in lines
            for index in range(len(element))]

您可以找到有关语法 here 的文档。

正如尤金所提到的,它将是列表理解而不是字典理解。您可以使用 zip() 进一步简化代码,因为您需要来自 elementkeyss 列表对应于同一索引。因此,您的简化 list comprehension 表达式应为:

datalist = [{k: e} for elements in lines for e, k in zip(elements, keyss)]

您当前的代码不会创建字典,但如果这是您的意图,这可以通过

来完成
dict(zip(keyss, elements))

或字典理解

{key: value for key, value in zip(keyss, elements)}