python – 在嵌套列表中查找唯一元素

如果我有一个列表mylist = [“[amn,b,c]”,“[‘a,d,e’]”,“[‘f,b,e’]”],我需要一个列表所有独特元素如[amn,b,c,d,e,f],我该如何实现?

我试过创建一个函数,并尝试了其他一些方法,但无济于事.

功能:

mylist = ["[amn,b,c]", "[‘a,d,e’]", "[‘f,b,e’]"]

def print_list(the_list):

for each_item in the_list:

    if isinstance(each_item, list):

        print_list(each_item)

    else:

        print(each_item)

print_list(mylist)

输出:

[amn,b,c]

[‘a,d,e’]

[‘f,b,e’]

其他方法:

mylist = ["[amn,b,c]", "[‘a, d,e’]", "[‘f,b,e’]"]

mylist = str(mylist)

mylist = str(mylist)

mylist = [str(x) for x in (mylist)]

mylist = set(mylist)

i = {' ', "'", ',', '[', ']','‘', '’'}

mylist.difference_update(i)

mylist = list(mylist)

mylist.sort()

mylist

输出:

['a', 'b', 'c', 'd', 'e', 'f', 'm', 'n']

预期成绩:

[amn,b,c,d,e,f]

实际结果:

具有以下功能:

[amn,b,c]

[‘a,d,e’]

[‘f,b,e’]

用另一种方法:

['a', 'b', 'c', 'd', 'e', 'f', 'm', 'n']

最佳答案 您可以使用以下列表推导,其中使用
re.sub来删除不需要的字符,并使用.split获取基础列表,并使用,.

最后,为了从嵌套列表中获取唯一元素,您可以使用itertools.chain展平嵌套列表,并从结果生成一个集合以保留唯一值:

import re
from itertools import chain
set(chain(*[re.sub(r'[\[‘’\"\]]', '', i).split(',') for i in mylist]))
{'a', 'amn', 'b', 'c', 'd', 'e', 'f'}

哪里:

[re.sub(r'[\[‘’\"\]]', '', i).split(',') for i in mylist]
[['amn', 'b', 'c'], ['a', 'd', 'e'], ['f', 'b', 'e']]
点赞