gpt4 book ai didi

python - 如何将 python 列表与共享项合并到新列表中

转载 作者:行者123 更新时间:2023-11-28 16:43:35 24 4
gpt4 key购买 nike

我是 python 的新手,但遇到了障碍。我有一个 python 列表,每行包含一个列表。基本上,我想合并列表之间共享值的列表。例如,下面是我的 python 列表目前的样子,以及我希望在执行其他命令后数据看起来像什么。

我知道这类问题非常适合集合和交集,但我无法让它们正常工作。我还看过一篇使用索引的帖子,但对我也没有用。

列表的样子:

[
['mary', 'home'],
['mary', 'school'],
['mary', 'work'],
['bob', 'home'],
['bob', 'school'],
['bob', 'work'],
['tom', 'work'],
['tom', 'school'],
['tom', 'home'],
['bill', 'vacation'],
]

我希望它看起来像什么:

[
['mary', 'bob', 'tom', 'home', 'school', 'work'],
['bill', 'vacation'],
]

最佳答案

您的示例数据表明顺序在您的输入数据中很重要,这会使情况复杂化。假设它实际上只是一个例子,顺序并不重要,集合确实是解决问题的理想方法:

data = [
['mary', 'home'],
['mary', 'school'],
['mary', 'work'],
['bob', 'home'],
['bob', 'school'],
['bob', 'work'],
['tom', 'work'],
['tom', 'school'],
['tom', 'home'],
['bill', 'vacation'],
]

combined = []

for subset in [set(d) for d in data]:
for candidate in combined:
if not candidate.isdisjoint(subset):
candidate.update(subset)
break
else:
combined.append(subset)

这使用了 Python 的 for-else构造,不是每个人都熟悉的。 combined 将包含一个集合列表,因此您可能希望根据您的用例将它们转换为列表。

关于python - 如何将 python 列表与共享项合并到新列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16223680/

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