python - 从多个列表和列表列表中获取唯一对象。然后创建一个包含所有列表中唯一对象的新列表

标签 python

我的数据集混合了列表和列表的列表。所以我需要从列表或列表列表中获取唯一对象,但找不到任何成功。输入数据集如下:

[[1, 2, 39], [1, 2, 39], [3], [[3], [4, 14, 63, 65], [66, 68, 82, 94]], [[5, 8, 31, 34], [36, 37, 42, 44], [55]], [6, 91], [[7, 35, 60, 71], [73, 83, 95, 98]], [[5, 8, 31, 34], [36, 37, 42, 44], [55]], [9, 72], [[10, 22, 30, 32], [38, 51, 56, 87], [89, 92]], [11], [12], [13, 90], [[4, 14, 63, 65], [66, 68, 82, 94]]]

需要的输出:

[[1, 2, 39], [3], [4, 14, 63, 65], [66, 68, 82, 94], [5, 8, 31, 34], [36, 37, 42, 44], [55], [6, 91], [7, 35, 60, 71], [73, 83, 95, 98], [9, 72], [10, 22, 30, 32], [38, 51, 56, 87], [89, 92], [11], [12], [13, 90], [66, 68, 82, 94]]

abc=[]
for x in pool:
    if x not in abc:
        abc.append(x)

我不明白如何选择由列表和列表列表组成的列表的不同对象。任何帮助将不胜感激。

我咨询了多个来源,但都没有解决我的问题。其中少数如下:

Unique lists from a list

https://www.geeksforgeeks.org/python-get-unique-values-list/

Creating unique list of objects from multiple lists

最佳答案

您可以使用生成器将列表展平,然后遍历生成的值并添加到结果(如果未看到)。像这样的东西:

def flatten(l):
    for item in l:
        if isinstance(item[0], list):
            yield from flatten(item)
        else:
            yield item

seen = set()
unique = [] 

for l in flatten(l):
    if tuple(l) in seen:
        continue
    seen.add(tuple(l))
    unique.append(l)

print(unique)

结果

[[1, 2, 39],
 [3],
 [4, 14, 63, 65],
 [66, 68, 82, 94],
 [5, 8, 31, 34],
 [36, 37, 42, 44],
 [55],
 [6, 91],
 [7, 35, 60, 71],
 [73, 83, 95, 98],
 [9, 72],
 [10, 22, 30, 32],
 [38, 51, 56, 87],
 [89, 92],
 [11],
 [12],
 [13, 90]]

关于python - 从多个列表和列表列表中获取唯一对象。然后创建一个包含所有列表中唯一对象的新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59807043/

相关文章:

python - 递归混合字符串

python - 无法使用 python PIL Image.show 显示图像

python - 如何在nltk python中通过标签获取树中的节点?

python - 如何从 tkinter 线程中运行的 websocket 发送消息?

python - 构建所有可能数字列表的更智能方法

python - 使用 Google Cloud Stackdriver 在 Kubernetes Engine 上记录 Python 代码的重复日志条目

python - 将 6 个随机生成的数字与 csv 中的数据重复相乘

python - 解决开关 block 中默认标签的移位/减少冲突

python - 如何定位和对齐 matplotlib 图形图例?

python - 多重预测