Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何检查列表列表中的两个元组是否不相同_Python - Fatal编程技术网

Python 如何检查列表列表中的两个元组是否不相同

Python 如何检查列表列表中的两个元组是否不相同,python,Python,如果上面列表中的(1,1)或其他元组多次出现,我如何报告错误 清单也是如此 lt1 = [(1, 1), (1, 1), (1, 5), (1, 4), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2)] 如果['a',(1,2)]或任何其他元素出现不止一次,如何报告错误使用集合和循环;该集合将让您知道您以前是否见过某个元素: lt22 = [['a', (1,1)], ['a', (1,2)], ['a', (1,2)], ['a', (1,3)], ['b',

如果上面列表中的(1,1)或其他元组多次出现,我如何报告错误

清单也是如此

lt1 = [(1, 1), (1, 1), (1, 5), (1, 4), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2)]

如果['a',(1,2)]或任何其他元素出现不止一次,如何报告错误

使用集合和循环;该集合将让您知道您以前是否见过某个元素:

lt22 = [['a', (1,1)], ['a', (1,2)], ['a', (1,2)], ['a', (1,3)], ['b', (2,1)], ['b', (2,2)], ['b', (2,2)]]
请注意,对于第二个列表中的可变元素,您希望首先将其转换为元组等不可变变量:

seen = set()
for el in lt1:
    if el in seen:
        raise ValueError, 'More than one %r in your list' % (el,)
    seen.add(el)

如果您只想检测它,而不想准确地看到哪些元素多次出现,您可以执行以下操作:

seen = set()
for el in lt22:
    el = tuple(el)
    if el in seen:
        raise ValueError, 'More than one %r in your list' % (el,)
    seen.add(el)
在第二个示例中,在转换为集合之前,需要将列表映射到元组:

if len(lt1) != len(set(lt1)):
    # Not all unique
如果您想知道每个项目发生了多少次,请使用python 2.7中引入的
collections.Counter

if len(lt22) != len(set(map(tuple, lt22))):
    # Not all unique
同样,在使用它之前,必须将
lt22
映射到
tuple


如果您只需要列出哪些项目多次出现,Martijns解决方案可能是该特定任务中最有效的解决方案。

出于某种原因,我现在看到了来自芝麻街的Bob唱着“其中一项与其他项不同…”的图像
>>> from collections import Counter
>>> {k: d for k, d in Counter(lt1).items() if d > 1}
{(1, 1): 2}