gpt4 book ai didi

python - 在Python中将列表列表合并为单个列表时删除重复项

转载 作者:行者123 更新时间:2023-12-01 07:14:02 25 4
gpt4 key购买 nike

所以,我有如下列表:

data = [
['foo', 'bar'],
['one', 'two']
]

而且,我想通过在两个列表之间交替来压平这些列表。所以,输出如下

flattened = ['foo', 'one', 'bar', 'two']

我正在使用list(chain.from_iterable(zip_longest(*data)))效果很好。

但是,我正在尝试找出如何处理存在我想要删除的重复项的情况。

data = [
['foo', 'bar'],
['foo', 'two']
]

我想要类似的东西

flatted = ['foo', 'two', 'bar'] 

而不是['foo', 'foo', 'bar', 'two']

我该怎么做?

最佳答案

使用集合来跟踪您已经看到的内容,这是 O(1) 成员资格测试。

result = []
seen = set()
for item in chain.from_iterable(zip_longest(*data)):
if item not in seen:
seen.add(item)
result.append(item)
>>> result
['foo', 'bar', 'two']

请注意,这个问题讨论的是从列表中删除重复项:Removing duplicates in lists

TL;DR

对于 Python 3.7+(或 Cython 3.6+):

>>> list(dict.fromkeys(chain.from_iterable(zip_longest(*data))))
['foo', 'bar', 'two']

关于python - 在Python中将列表列表合并为单个列表时删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58068857/

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