Python 在嵌套列表中查找唯一的子列表
一段时间以来,我一直在努力解决以下问题: 考虑以下示例嵌套列表:Python 在嵌套列表中查找唯一的子列表,python,unique,nested-lists,Python,Unique,Nested Lists,一段时间以来,我一直在努力解决以下问题: 考虑以下示例嵌套列表:example_nestedlist=[['Apple','Orange'],['Apple','Orange'],['Apple','Orange'],['Apple','Banana'],['Apple','Banana','草莓'],['Apple','Banana','草莓'] 这是我从产品数据生成的许多嵌套列表中的一个,对于每个嵌套列表(包含1-100个列表),我希望重新创建嵌套列表,使其仅包含唯一的子列表 预期输出可能如
example_nestedlist=[['Apple','Orange'],['Apple','Orange'],['Apple','Orange'],['Apple','Banana'],['Apple','Banana','草莓'],['Apple','Banana','草莓']
这是我从产品数据生成的许多嵌套列表中的一个,对于每个嵌套列表(包含1-100个列表),我希望重新创建嵌套列表,使其仅包含唯一的子列表
预期输出可能如下所示:
output\u nestedlist=['Apple'],['Orange'],['Banana'],['草莓'],['Apple','Banana']]
然而,预期的输出并不限于此。例如,第二个子列表也可以是['Apple','Orange']
,而不仅仅是['Orange']
。
最终目标仍然是拥有唯一的子列表,而不管这些子列表中实际包含什么(或它们的长度)
我已经在探索几种方法,例如:
- 使用
生成尽可能多的“不同”唯一子列表set()
- 同时还使用
检测完全相似的子列表,在这种情况下,我使用随机化选择要显示在子列表中的项目set()
- 在这两种方法之后,我创建了大量用于捕获异常的“规则”
edit1:保留子列表的顺序也很重要,因为这些子列表以后需要连接到它们的唯一标识符。注意:删除了最后一个答案,因为它不符合要求 看起来您需要使用组合。 结果符合以下条件:
结果
中的每个项目都应该是输入
列表中相应项目的子集[['Apple'], ['Orange'], ['Banana'], ['Strawberry'], ['Apple', 'Banana']]
尚不清楚子列表的独特之处。它们不包含相同的项目?如果是这样的话,它不就是
集(子列表中subl的元组(subl)
?理想情况下,如果有多个源,则显示一个输入集和所有有效结果。这将确保我们真正理解您的要求requirements@ReutSharabani啊,对不起,我的错!唯一性意味着没有一个子列表在长度和项目上与另一个子列表完全相同。它们可能都包含类似的项目,只要每个子列表之间总是存在差异。@gelonida你是对的,但我希望“所有可能的组合”都可以。只要所有子列表都是唯一的(这意味着没有两个子列表中的项目完全相同),那么每个子列表中的内容都不重要。我试图在这里将其表示为一个“简单”的示例,但是在我的实际工作数据集中,有嵌套列表包含子列表,其中每个子列表都有大约10-25项。@ReutSharabani遗憾的是,该解决方案不起作用,主要是因为它忽略了嵌套列表中子列表的顺序。应该在要求中加上:)谢谢你的回答!但是,我需要保留示例\u nestedlist
中的每个子列表。将它们视为5辆“食品卡车”,它们都携带了几个水果(输入),这些水果可能是完全重复的,但当我最终“打开”每辆卡车时,我想看到每辆卡车中不同的水果组合。因此,卡车1可能有['Apple']
,卡车2可能有['Apple','Orange']
。但是卡车1也可以有['Orange']
和卡车2['Apple']
。但是卡车1也可以有['Apple','Orange']
,卡车2可以有['Apple']
或['Orange']
。只要每辆卡车都有一个独特的“负载”,那么每辆卡车装载的水果组合就不重要了。但关键是所有5辆卡车(在本例中)都需要运输一个或多个水果。因此,根据输入列表,卡车1是否可以运输['Banana']
,或者必须是['Apple']
或['Orange']
就可能的项目而言,后者的子列表是“固定”的。因此项目不能在子列表之间交换:)更新了答案,如果仍然不符合您的任何要求,请告诉我
[['Apple'], ['Orange'], ['Banana'], ['Strawberry'], ['Apple', 'Banana']]