Python删除';重复';字典中的元组

Python删除';重复';字典中的元组,python,python-3.x,dictionary,tuples,Python,Python 3.x,Dictionary,Tuples,我有一本以元组为键的字典。所有这些元组都有两个值,我将使用字母作为值来保持简单,例如元组(a,b) 两个值的顺序无关紧要,这意味着(a,b)基本上与(b,a)相同(或排序重复)。所以我试着写一些东西来删除所有这些冗余的键,值对,但它不起作用,我被它卡住了。我确信这只是我忽略的一些简单的事情,不管我怎么想 我认为这会奏效: def undupe_overlaps(overlaps): dupes = [] for key, item in overlaps.items():

我有一本以元组为键的字典。所有这些元组都有两个值,我将使用字母作为值来保持简单,例如元组(a,b)

两个值的顺序无关紧要,这意味着(a,b)基本上与(b,a)相同(或排序重复)。所以我试着写一些东西来删除所有这些冗余的键,值对,但它不起作用,我被它卡住了。我确信这只是我忽略的一些简单的事情,不管我怎么想

我认为这会奏效:

def undupe_overlaps(overlaps):
    dupes = []
    for key, item in overlaps.items():
        if (key[1], key[0]) in overlaps:
            dupes.append((key[1], key[0]))
    for item in dupes:
    overlaps.pop(item)
    return overlaps

重叠是字典,我使用重复列表,因为不能同时从dict中删除内容并在其上循环。任何帮助或提示都将不胜感激:)

您可以将这些键与dict单独转换为一个列表,然后在迭代这些键时修改dict

def undupe_overlaps(overlaps):
    dupes = set()
    for key_tuple in list(overlaps.keys()):
        if key_tuple in dupes or (key_tuple[1], key_tuple[0]) in dupes:
            overlaps.pop(key_tuple)
        dupes.add(key_tuple)
    return overlaps

您的
if
语句错误。应该是:

if (key[1], key[0]) not in dupes:
        dupes.append(key)
基本上,您要求当前键(元素已反转)在
dups
列表中不存在


您的一段代码不起作用,因为您正在查看重叠,如果存在反转的关键点,则插入当前关键点。这样,“单个”键,即没有对应键的键,永远不会插入到
复制程序中

可能
排序
元组元素?在这种情况下,您应该使用而不是元组作为键,并且您将免费获得此属性。它是否应该是和?如果没有重复的presentNo,我不想删除key\u元组。左侧(
key\u tuple in duppes
)应始终返回False,因此只有右侧(
(key\u tuple[1],key\u tuple[0])在duppes
)具有任何效果。我加入它只是为了帮助说明这里的逻辑。如果将其更改为
,则该语句将永远不会返回True。只需对其进行测试,即可100%正常工作,因此感谢您的帮助:)我将进一步检查它,以便更好地理解它!(我仍然认为这是新的)我改变了IF语句,现在仍然有欺骗。