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

标签 python python-3.x

如果我有一个列表 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展平嵌套列表,并根据结果生成一个 set 以保持唯一值:

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']]

关于python - 在嵌套列表中查找唯一元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54477996/

相关文章:

python - YellowBrick 导入错误 : cannot import name 'safe_indexing' from 'sklearn.utils'

python - 无法从 Qt5 中的 QWheelEvent 获取 pixelDelta

python - 将 numpy 数组写入具有可变整数精度的二进制文件

python - 如何创建包含 256 个元素的列表?

python - 在 ElementTree 中处理 CDATA 和注释

python - Beautifulsoup - 网络爬虫的问题

Python 编译字节码 : Unable to read file if non-ascii character are present

python - Pandas 中的 read_excel 错误 ('ElementTree' 对象没有属性 'getiterator' )

python - QtabWidget 和 QMainWindow 在一个类中

python - 对元素列表的设置操作