首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于词典理解的探讨

关于词典理解的探讨
EN

Stack Overflow用户
提问于 2016-11-04 08:52:51
回答 3查看 75关注 0票数 0

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

代码语言:javascript
复制
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]可以工作。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-04 08:56:16

字典的理解创造了一本词典。你想要一份清单理解:

代码语言:javascript
复制
datalist = [{keyss[index]:element[index]}) for element in lines
            for index in range(len(element))]

您可以找到语法这里上的文档。

票数 1
EN

Stack Overflow用户

发布于 2016-11-04 13:14:18

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

代码语言:javascript
复制
dict(zip(keyss, elements))

或者字典的理解

代码语言:javascript
复制
{key: value for key, value in zip(keyss, elements)}
票数 1
EN

Stack Overflow用户

发布于 2016-11-04 10:05:23

正如尤金所提到的,它将是列表理解,而不是割裂理解。您可以使用zip()进一步简化代码,因为您需要与相同索引对应的from elementkeyss列表。因此,简化的列表理解表达式应该如下:

代码语言:javascript
复制
datalist = [{k: e} for elements in lines for e, k in zip(elements, keyss)]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40418533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档