gpt4 book ai didi

Python itertools 分组

转载 作者:行者123 更新时间:2023-11-28 21:04:59 26 4
gpt4 key购买 nike

比方说,我有以下元组列表

[('FRG', 'MCO TPA PIE SRQ', 'WAVEY EMJAY J174 SWL CEBEE '), 
(' ', 'FMY RSW APF', 'WETRO DIW AR22 JORAY HILEY4'),
(' ', 'FMY RSW APF', 'WETRO DIW AR22 JORAY HILEY4')
('FRG2', 'MCO TPA PIE SRQ', 'WAVEY EMJAY J174 SWL CEBEE '),
(' ', 'FMY RSW APF', 'WETRO DIW AR22 JORAY HILEY4')]

我如何将这些分组以在最后有一个字典,例如:

{'FRG': ['MCO TPA PIE SRQ', 'WAVEY EMJAY J174 SWL CEBEE ', 'FMY RSW APF', 'WETRO DIW AR22 JORAY HILEY4', 'FMY RSW APF', 'WETRO DIW AR22 JORAY HILEY4'],
'FRG2': ...}

也就是说,我想将 tuple[0] 是一个单词的部分与 tuple[0] 的后续部分(可能很多)粘合在一起 为空(仅包含空格)。
我正在尝试使用 itertools 中的 groupbytakewhile 但还没有找到任何可行的解决方案。理想情况下,解决方案包含其中之一(即出于学习目的)。

最佳答案

不是我推荐它,但要为此使用 itertools.groupby(),您需要一个键函数来记住上次使用的键。像这样:

def keyfunc(item, keys=[None]):
if item[0] != keys[-1] and not item[0].startswith(" "):
keys.append(item[0])
return keys[-1]

d = {k: [y for x in g for y in x[1:]] for k, g in groupby(lst, key=keyfunc)}

一个简单的 for 循环看起来更简洁并且不需要任何 import:

d, key = {}, None
for item in lst:
if item[0] != key and not item[0].startswith(" "):
key = item[0]
d.setdefault(key, []).extend(item[1:])

关于Python itertools 分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44640016/

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