在python散列中识别重复项并引发异常并打印重复值

2024-05-16 00:44:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码中有一个哈希,hash1 = [val1, val2, val3]-- 有多个这样的散列——hash1……hashn。在

我想做一个比较,在hash1…hashn中,如果它们匹配所有的值,它应该打印出这些值并引发一个异常,我该怎么做?在

也就是说

hash1 = (1234, "this is me", 456, "hello")
hash2 = (2345, "hello from adele", 456, "hello again")
........
hashn = (1234, "this is me", 456, "hello")

hash1=hashn——引发异常并打印hashn值

如何在python中执行这个检查?我不想使用集合,我更喜欢按列表/映射。在


Tags: 代码fromhello列表isthismeagain
1条回答
网友
1楼 · 发布于 2024-05-16 00:44:43

在Python中,tuple等式是一个元素一个元素地工作,所以您可以简单地

if hash1 == hash2:
    ...

如果它们都在一个列表中,那么O(n^2)的解决方案是

^{pr2}$

或使用any

def check_dups(L):
    for i in range(len(L)):
        if any(L[i] == L[j] for j in range(i+1, len(L))):
            ...

如果有大量元素,一个更有效的方法是先进行排序,然后进行线性扫描(重复项将在排序后的列表中相邻,因为for tuplesa < b在元素上按字典顺序工作)。在

另一个更快的选择是使用dict,其中tuples作为键,索引作为值(如果您不关心原始列表中的冲突索引是什么,则使用set)。这是可行的,因为tuples被视为“值”而不是“对象”,因此不考虑标识。在

相关问题 更多 >