gpt4 book ai didi

python - 根据重复值合并嵌套列表项

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

虽然写得不好,但这段代码:

marker_array = [['hard','2','soft'],['heavy','2','light'],['rock','2','feather'],['fast','3'], ['turtle','4','wet']]
marker_array_DS = []

for i in range(len(marker_array)):
if marker_array[i-1][1] != marker_array[i][1]:
marker_array_DS.append(marker_array[i])

print marker_array_DS

返回:

[['hard', '2', 'soft'], ['fast', '3'], ['turtle', '4', 'wet']]

它完成了部分任务,即创建一个新列表,其中包含除索引 [1] 中具有重复值的列表之外的所有嵌套列表。但我真正需要的是连接已删除列表中的匹配索引值,创建如下列表:

[['hard heavy rock', '2', 'soft light feather'], ['fast', '3'], ['turtle', '4', 'wet']]

索引 [1] 中的值不得连接。我设法使用另一篇文章中的提示完成了串联部分:

newlist = [i + n for i, n in zip(list_a, list_b]

但我正在努力寻找产生所需结果的方法。 “marker_array”列表在传递给此代码之前已经按升序排序。索引 [1] 位置中的所有类似值将是连续的。某些嵌套列表可能没有任何超出 [0] 和 [1] 的值,如上所示。

最佳答案

快速尝试...使用 itertools.groupby 为您进行分组,但通过将 2 元素列表转换为 3 元素列表的生成器来完成。

from itertools import groupby
from operator import itemgetter

marker_array = [['hard','2','soft'],['heavy','2','light'],['rock','2','feather'],['fast','3'], ['turtle','4','wet']]

def my_group(iterable):
temp = ((el + [''])[:3] for el in marker_array)
for k, g in groupby(temp, key=itemgetter(1)):
fst, snd = map(' '.join, zip(*map(itemgetter(0, 2), g)))
yield filter(None, [fst, k, snd])

print list(my_group(marker_array))

关于python - 根据重复值合并嵌套列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17286252/

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