Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将python列表与共享项组合到新列表中_Python_List_Python 2.7_Set_Intersection - Fatal编程技术网

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

如何将python列表与共享项组合到新列表中,python,list,python-2.7,set,intersection,Python,List,Python 2.7,Set,Intersection,我是python新手,遇到了一个障碍。我有一个python列表,每行包含一个列表。基本上,我希望合并在列表之间共享值的列表。例如 下面是我的python列表目前的外观,以及我希望在执行附加命令后数据的外观 我知道这类问题对于集合和交集来说是理想的,但我就是没能让它们正常工作。我也看到过一篇使用索引的帖子,这对我来说也不起作用 列表内容如下: [ ['mary', 'home'], ['mary', 'school'], ['mary', 'work'], ['bo

我是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的构造,这不是每个人都熟悉的<代码>组合将包含一个集合列表,因此您可能希望根据您的用例将它们转换为列表。

谢谢Zero,它工作得很好!你是对的,秩序并不重要。