如何从字典(python)中以相反的顺序删除重复的键

use*_*972 0 python dictionary

在下面的例子中,我正在努力从字典中删除相同的键:

{('cat', 'tiger'): 18,
 ('tiger', 'cat'): 18,
 ('chines', 'gentleman'): 7,
 ('gentleman', 'chines'): 7}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我考虑反向顺序('cat', 'tiger'): 18('tiger', 'cat'): 18相同的键,并尝试制作如下的新字典

 {('cat', 'tiger'): 18,
  ('gentleman', 'chines'): 7}
Run Code Online (Sandbox Code Playgroud)

我正在尝试调整任何相反的顺序情况,当我有一个类似的字典,如{(('cage', 'cat'), 5),(('cat', 'cage'), 5)}要合并或删除,任何一个.

sch*_*ggl 5

您可以按以下方式执行操作:

d = {('cat', 'tiger'): 18,
     ('tiger', 'cat'): 18,
     ('chines', 'gentleman'): 7,
     ('gentleman', 'chines'): 7}

result = {tuple(sorted(x)): y for x, y in d.items()}
# {('cat', 'tiger'): 18, ('chines', 'gentleman'): 7}
Run Code Online (Sandbox Code Playgroud)

在这种dict理解中,每组"相等"键的最后遇到的值获胜.对于您的样本数据,这应该无关紧要,因为这些键具有equla值.请注意,这也只是对元组进行排序,而不管原始中实际出现的排序版本dict.