首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分解理解列表中的元组

问分解理解列表中的元组
EN

Stack Overflow用户
提问于 2018-02-27 11:32:41
回答 3查看 88关注 0票数 3

我有一个字典,其中的键是元组。我正在寻找一个理解列表来分解列表中的元组

代码语言:javascript
复制
dicto={(1,2):1, (3,4):1, (5,6):3}
expected outcome: [1,2,3,4,5,6] (order doesnt matter)

到目前为止,我得到的最好的结果是:

代码语言:javascript
复制
[x for x, y in dicto.keys()] ### [x, y for x, y in dicto.keys()] doesnt work :-(

有没有一种好的、优雅的方法来在一行中实现这一点呢?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-02-27 11:33:42

您可以通过使用单个理解来展平dicto.keys():

代码语言:javascript
复制
dicto={(1,2):1, (3,4):1, (5,6):3}
final_result = [i for b in dicto.keys() for i in b]

输出:

代码语言:javascript
复制
[1, 2, 5, 6, 3, 4]
票数 5
EN

Stack Overflow用户

发布于 2018-02-27 11:39:30

您可以获取dict的所有密钥,使用itertools.chain将其展平以获得您想要的结果

代码语言:javascript
复制
>>> import itertools
>>> dicto={(1,2):1, (3,4):1, (5,6):3}
>>> list(itertools.chain(*dicto.keys()))
>>> [1, 2, 5, 6, 3, 4]

或者,您也可以使用itertools.chain.from_iterable来展平嵌套的元组列表(字典键)

代码语言:javascript
复制
>>> import itertools
>>> dicto={(1,2):1, (3,4):1, (5,6):3}
>>> list(itertools.chain.from_iterable(dicto.keys()))
>>> [1, 2, 5, 6, 3, 4] 
票数 4
EN

Stack Overflow用户

发布于 2018-02-27 11:40:38

您可以使用reduce函数来合并列表:

代码语言:javascript
复制
dicto = {(1,2):1, (3,4):1, (5,6):3}
your_list = list(reduce(lambda a, b: a + b, dicto.keys()))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49000666

复制
相关文章

相似问题

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