gpt4 book ai didi

Python按某个词切割列表

转载 作者:太空宇宙 更新时间:2023-11-03 12:26:43 25 4
gpt4 key购买 nike

我有一个这样的列表:

[["tab1", None], ["val1", 10], ["val2", "test"], ["val3", 20], ["tab2", None], ["val4", "test"], ["val5", 30]]

如果找到单词“tab”,我正在寻找一种切入 n 个列表的方法,结果可能是这样的:

list1 = [["val1", 10], ["val2", "test"], ["val3", 20]]

list2 = [["val4", "test"], ["val5", 30]]

我尝试使用一些 for 循环但没有完成。

但我不知道如何使用 python 实现这一点。有人有想法吗?

提前致谢

最佳答案

为此,我更喜欢一个简单的 for 循环:

In [56]: new_l = []

In [57]: for i in l:
...: if 'tab' in i[0]:
...: new_l.append([])
...: else:
...: new_l[-1].append(i)
...:

In [58]: new_l
Out[58]:
[[['val1', 10], ['val2', 'test'], ['val3', 20]],
[['val4', 'test'], ['val5', 30]]]

可能有更短的解决方案,但我怀疑它会更好。

编辑:使用 itertools.groupby 找到了一个较短的版本(不过仍然更喜欢循环):

In [66]: [list(v) for _, v in filter(lambda x: x[0], itertools.groupby(l, key=lambda x: 'tab' not in x[0] ))]    
Out[66]:
[[['val1', 10], ['val2', 'test'], ['val3', 20]],
[['val4', 'test'], ['val5', 30]]]

关于Python按某个词切割列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45182020/

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