我有一个包含三个级别的列表,其中包含不同数量的元素,如下所示:
>>> print some_list
[ [a], [[b,c],[b,c]], [[b,c],[b,c]], [d], [[e,f],[e,g]], [h,j,k,l,m] ]
如何从中删除重复的元素?
此外,我想要一个具有一个级别和所有唯一元素的输出列表。
我已尝试使用set()
函数,但它会返回错误输出。
答案 0 :(得分:0)
如果您只想要一个包含所有非重复元素的(单个平面)列表,则可以执行此操作。虽然我确定这是重复的。
import itertools
print(list(set(itertools.chain(*itertools.chain.from_iterable(some_list)))))
结果:
>>> some_list = [ ['a'], [['b','c'],['b','c']], [['b','c'],['b','c']], ['d'], [['e','f'],['e','g']], ['h','j','k','l','m'] ]
>>> print(list(set(itertools.chain(*itertools.chain.from_iterable(some_list))))
['f', 'm', 'k', 'b', 'd', 'j', 'a', 'c', 'e', 'g', 'h', 'l']
答案 1 :(得分:0)
此post中来自HYRY的已使用的实用程序函数。
一旦你从列表转换为元组,你的设定实际上是有效的:
def list2tuple(a):
return tuple((list2tuple(x) if isinstance(x, list) else x for x in a))
def tuple2list(a):
return list((tuple2list(x) if isinstance(x, tuple) else x for x in a))
l1=[ ['a'], [['b','c'],['b','c']], [['b','c'],['b','c']], ['d'], [['e','f'],['e','g']], ['h','j','k','l','m'] ]
#tuples are hashable, but lists aren't, so you have to convert to a tuple first
print tuple2list(set(list2tuple(l1)))
输出:
[['d'], ['a'], ['h', 'j', 'k', 'l', 'm'], [['e', 'f'], ['e', 'g']], [['b', 'c'], ['b', 'c']]]
答案 2 :(得分:0)
首先展平你的清单,然后使用set():
r.db('locations').table('instagram').union(r.db('locations').table('twitter'))
输出:[' a',''' c',' d',' e' ,''' h',' j',' k',' l',' m']