词典理解查询
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()
进一步简化代码,因为您需要来自 element
和 keyss
列表对应于同一索引。因此,您的简化 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)}
下面的代码来自一个更大的部分。 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()
进一步简化代码,因为您需要来自 element
和 keyss
列表对应于同一索引。因此,您的简化 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)}