下面的代码来自一个更大的部分。行是2D列表,keyss是一维列表。行中的所有元素与keyss的长度相同。
datadict = []
for element in lines:
for index in range(len(element)):
datadict.append({keyss[index]: element[index]})我想知道是否有一种用字典理解来写这篇文章的方法?这是一个更奇怪的问题,因为显示的代码对我所做的工作很好。我一直在努力,但也找不到办法。如果你能看一下它的语法的话,谢谢!
EDIT#1:
读了回覆后,我意识到这并不是真的起作用。我试着做一个列表理解,其中每一个元素都是一个字典理解。我不完全确定这是否可能。我想做一个字典列表,在这个列表中,我使用keyss中的每个元素,并在行中的元素中匹配索引,这是一个列表,如果这是有意义的话。
编辑2:我发现data_list = [{keyss[i]:row[i] for i in range(len(keyss))} for row in lines]可以工作。
发布于 2016-11-04 08:56:16
字典的理解创造了一本词典。你想要一份清单理解:
datalist = [{keyss[index]:element[index]}) for element in lines
for index in range(len(element))]您可以找到语法这里上的文档。
发布于 2016-11-04 13:14:18
您当前的代码不会创建字典,但如果这是您的意图,则可以通过
dict(zip(keyss, elements))或者字典的理解
{key: value for key, value in zip(keyss, elements)}发布于 2016-11-04 10:05:23
正如尤金所提到的,它将是列表理解,而不是割裂理解。您可以使用zip()进一步简化代码,因为您需要与相同索引对应的from element和keyss列表。因此,简化的列表理解表达式应该如下:
datalist = [{k: e} for elements in lines for e, k in zip(elements, keyss)]https://stackoverflow.com/questions/40418533
复制相似问题