Python在字典上删除具有相同值的键

Ari*_*l M 0 python dictionary

我需要在字典上做一个不"自然"的操作,所以我想知道什么是最好的pythonic方法来做到这一点.

我需要通过删除具有相同值的所有键来简化字典(键是不同的,值是相同的)

例如:输入:

  dict = {key1 : [1,2,3], key2: [1,2,6], key3: [1,2,3]}
Run Code Online (Sandbox Code Playgroud)

预期产量:

  {key1 : [1,2,3], key2:[1,2,6]}
Run Code Online (Sandbox Code Playgroud)

我不关心删除哪个键(例如:key1或key3)

fal*_*tru 5

交换密钥和值; 重复的键值对将作为副作用删除(因为字典不允许重复的键).再次交换密钥和值.

>>> d = {'key1': [1,2,3], 'key2': [1,2,6], 'key3': [1,2,3]}
>>> d2 = {tuple(v): k for k, v in d.items()}  # exchange keys, values
>>> d = {v: list(k) for k, v in d2.items()}   # exchange again
>>> d
{'key2': [1, 2, 6], 'key1': [1, 2, 3]}
Run Code Online (Sandbox Code Playgroud)

注意:tuple(v)使用因为list不可清洗; 不能直接用作密钥.

顺便说一句,不要dict用作变量名.它将影响内置函数/类型dict.