我有以下字典,
>>> names
{1: ('c1', 1), 2: ('c2', 2), 3: ('c1', 3), 4: ('c2', 4)}
根据值中的第一个条目消除具有重复条目的键的最佳方法是什么,即 1 和 3 由于“c1”而重复,而 2 和 4 由于“c2”而重复?
我希望最终的输出是这样的
>>> uniqueNames
{1: ('c1', 1), 2: ('c2', 2) }
请您参考如下方法:
类似于如何在保持列表顺序的同时消除常规列表中的重复项。
这里唯一真正的区别是字典没有顺序,这意味着通过 names.items 的迭代顺序是任意的,因此您将保留一个任意键值对,其中第一个项目是唯一的值元组。
>>> names = {1: ('c1', 1), 2: ('c2', 2), 3: ('c1', 3), 4: ('c2', 4)}
>>>
>>> seen = set()
>>> unique_names = {}
>>>
>>> for k, (v0, v1) in names.items():
... if v0 not in seen:
... unique_names[k] = (v0, v1)
... seen.add(v0)
...
>>> unique_names
{1: ('c1', 1), 2: ('c2', 2)}
