嵌套在词典中的列表的列表理解

温诺

我有一本字典,其中每个值都是一个列表,如下所示:

dictA = {1:['a','b','c'],2:['d','e']}

不幸的是,我无法更改此结构来解决我的问题

我想将列表的所有条目收集到一个列表中,如下所示:

['a','b','c','d','e']

另外,我只想在if块内执行一次。由于我只想执行一次,所以我不想将其存储到中间变量,因此自然而然地,列表理解是解决之道。但是如何?我的第一个猜测

[dictA[key] for key in dictA.keys()]

产量,

[['a','b','c'],['d','e']]

这不起作用,因为

'a' in  [['a','b','c'],['d','e']]

产量False我尝试过的其他所有内容都使用了某种非法语法。

我将如何进行这种理解?

马丁·彼得斯(Martijn Pieters)

循环遍历返回的列表(直接遍历字典也为您提供键):

[value for key in dictA for value in dictA[key]]

或更直接使用dictA.itervalues()

[value for lst in dictA.itervalues() for value in lst]

列表理解让您嵌套循环;阅读以上循环,就像它们以相同顺序嵌套一样:

for lst in dictA.itervalues():
    for value in lst:
        # append value to the output list

或使用itertools.chain.from_iterable()

from itertools import chain

list(chain.from_iterable(dictA.itervalues()))

后者采用一个序列序列,让您像将它们视为一个大列表一样循环遍历。dictA.itervalues()为您提供了一系列列表,chain()并将它们组合在一起以list()进行迭代并从中构建一个大列表。

如果您要做的只是测试所有值之间的隶属关系,那么您真正想要的是一种简单的方法来遍历所有值,并针对每个值测试您的值,直到找到匹配项。any()函数与合适的生成器表达式一起可以实现以下目的:

any('a' in lst for lst in dictA.itervalues())

这将返回True只要在任何价值dictA已经'a'上市,并停止遍历.itervalues()月初。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

列表理解以扁平化词典词典

来自分类Dev

重命名嵌套在R中列表中的矩阵的列

来自分类Dev

Python中的嵌套列表理解

来自分类Dev

嵌套列表中某些元素的列表理解

来自分类Dev

词典理解列表-多个条件

来自分类Dev

列表理解创建嵌套列表

来自分类Dev

带有嵌套词典列表的字典中的Pandas DataFrame

来自分类Dev

嵌套在R中的嵌套列表中的过程矢量

来自分类Dev

理解列表中循环的双变量嵌套

来自分类Dev

从词典列表创建嵌套的词典

来自分类Dev

嵌套列表的列表理解

来自分类Dev

列表理解中的嵌套列表为for循环

来自分类Dev

根据日期差异从嵌套在另一个词典中的列表中删除词典

来自分类Dev

当列表嵌套在R列表中时,如何简洁地命名多个列表的所有元素?

来自分类Dev

使用Python的嵌套列表理解中的NameError

来自分类Dev

如何删除嵌套在列表中的元组?

来自分类Dev

理解列表中循环的双变量嵌套

来自分类Dev

从嵌套词典列表中删除重复项

来自分类Dev

如何删除嵌套在向量中的列表中的元素

来自分类Dev

嵌套在R中的嵌套列表中的过程矢量

来自分类Dev

无法隐藏嵌套在div中的列表的溢出。

来自分类Dev

列表理解中的嵌套循环

来自分类Dev

Python-列表中的Dict嵌套在Dict中

来自分类Dev

从嵌套列表的列表理解中返回扁平列表

来自分类Dev

nltk中的python嵌套列表理解

来自分类Dev

Python - 嵌套在字典中的列表 - 如何对单个值求和

来自分类Dev

映射嵌套在字典中的列表

来自分类Dev

如何序列化嵌套在类中的实例列表?

来自分类Dev

从嵌套在列表中的字典中获取值?