gpt4 book ai didi

生成列表列表的Pythonic方式

转载 作者:太空宇宙 更新时间:2023-11-04 06:54:44 25 4
gpt4 key购买 nike

从以下输入实现转换的最 pythonic 方式是什么:

 input = [('a', 1), ('a', 10), ('b', 244), ('c', 31) , ('c',45)]

到所需的输出:

output = [[('a',1),('a',10)],[('c',31),('c',45)]]

我分组的地方列出了具有相同第一个元素的元组。

感觉 Python 在一行中编写复杂的东西方面具有强大的潜力(我是新手),我决定使用综合列表。我最初的尝试是这样的:

output = [x for x in input if [k[0] for f in input].count(x[0])>1] 

给我所有“伪”副本的漂亮列表:

output = [('a',1),('a',10),('c',31),('c',45)]

我进一步处理以获得我的结果。

我的问题是:有没有一种方法可以使用综合列表而不是两个(丑陋的)步骤在一行中实现这一结果?

最佳答案

使用 itertools 中的 groupby 和列表理解。这将为您提供一个简单的衬垫:

from itertools import groupby

filter(lambda x: len(x)>1, [list(g) for i,g in groupby(input, key=lambda x: x[0])])
[[('a', 1), ('a', 10)], [('c', 31), ('c', 45)]]

关于生成列表列表的Pythonic方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37564849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com