我有以下python列表: -
a=[['t1', ['a', 'c']], ['t2', ['b']], ['t2', ['b']]]
现在它包含重复列表['t2', ['b']]
2次
如果列表包含重复项,我想返回true。
谁能帮助我怎么做?
我尝试使用set功能,但它不能在这里工作!
答案 0 :(得分:0)
如果您的目标是删除重复项,this answer可能会有所帮助:
has_duplicates = lambda l: True in [(i in l[:n]) for n, i in enumerate(l)]
你可以这样重写:
has_duplicates(a) # True
您可以这样称呼它:
{{1}}
答案 1 :(得分:0)
如果您可以自由地将列表a
表示为元组/记录列表:
b = [(item[0], tuple(item[1])) for item in a]
(或者,首先):
a = [('t1', ('a', 'c')), ('t2', ('b')), ('t2', ('b'))]
然后项目变得可以清除,您可以使用collections.Counter
:
from collections import Counter
c = Counter(b)
所以你可以找到像:
这样的重复项duplicated_items = [key for key, count in c.iteritems() if count > 1]
(或者你可以使用set):
has_duplicates = len(set(b)) < len(b)