如果我有一个列表 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/