Python从字典中删除 'duplicate'元组

标签 python python-3.x dictionary tuples

我有一本以元组为键的字典。所有这些元组都有两个值,我将使用字母作为值以使事情简单,例如元组 (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

overlaps 是字典,我使用列表欺骗,因为你不能从字典中删除内容并同时循环它。任何帮助或提示将不胜感激:)

最佳答案

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

if (key[1], key[0]) not in dupes:
        dupes.append(key)

基本上,您要求当前键(元素反转)尚未出现在 dupes 列表中。

您的代码不起作用,因为您正在查看重叠,并在存在反向 key 时插入当前 key 。这样,“单个”键(即那些没有对应键的键)永远不会插入到dupers中。

关于Python从字典中删除 'duplicate'元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52841889/

相关文章:

python - 用于 Django 的 Gunicorn 异步和线程 worker

IOS文字游戏。验证词性能

python - np.random.seed(1) 和 np.random.seed(0) 之间的区别?

python - 从python中的异步函数修改全局变量

C# 循环遍历 List<dictionary<string,string>> 来填充 DataTable

python - 在 python 中更新 json 字典时出现奇怪的输出

python - 用于匹配导出为任务纸格式的 Omnifocus 项目的正则表达式

python - 如何在保持目录结构的同时提取所有 .tar.gz 文件?

Python CA Rally API Pyral - 在子项目中找不到用户故事

python - 使用json解析空字符串