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