在 python map dict 中删除反向 key:value 对的方法?
Way to remove reversed key:value pairs in python map dict?
我环顾四周,要么忽略了某些东西,要么找不到解决方案。通常我会避免制作 post 但我已经尝试了将近两天的时间来解决这个问题。
我对 python 还是有些陌生,所以我可能忽略了这里的一些东西:
我有这个字典:
dict = {'27': 28, '28': 27, '30' : 31, '31' : 30}
我想删除重复的 keys:values reversed.
所以对于最后的口述,我想要:
dict = {'27': 28, '30' : 31}
所以每个副本至少有一对 key:value。
如果这是重复的,我深表歉意post,但我四处寻找答案,但没有找到任何有用的或我可以解决的问题。
非常感谢任何帮助!
对于多个键:
data = {'27': 28, '28': 27, '30' : 31, '31' : 30}
seen = set()
seen_add = seen.update
data = {key: v for key, v in data.items() if not (((k := int(key)), v) in seen or seen_add(((k, v), (v, k))))}
{'27': 28, '30': 31}
如果dict中有严格的顺序(原对/倒对等),可以这样用:
data = {'27': 28, '28': 27, '30' : 31, '31' : 30}
l1 = list(data.items())[0::2]
dict(l1)
# {'27': 28, '30': 31}
我环顾四周,要么忽略了某些东西,要么找不到解决方案。通常我会避免制作 post 但我已经尝试了将近两天的时间来解决这个问题。
我对 python 还是有些陌生,所以我可能忽略了这里的一些东西:
我有这个字典:
dict = {'27': 28, '28': 27, '30' : 31, '31' : 30}
我想删除重复的 keys:values reversed.
所以对于最后的口述,我想要:
dict = {'27': 28, '30' : 31}
所以每个副本至少有一对 key:value。
如果这是重复的,我深表歉意post,但我四处寻找答案,但没有找到任何有用的或我可以解决的问题。
非常感谢任何帮助!
对于多个键:
data = {'27': 28, '28': 27, '30' : 31, '31' : 30}
seen = set()
seen_add = seen.update
data = {key: v for key, v in data.items() if not (((k := int(key)), v) in seen or seen_add(((k, v), (v, k))))}
{'27': 28, '30': 31}
如果dict中有严格的顺序(原对/倒对等),可以这样用:
data = {'27': 28, '28': 27, '30' : 31, '31' : 30}
l1 = list(data.items())[0::2]
dict(l1)
# {'27': 28, '30': 31}