Skip to main content
 首页 » 编程设计

python之从字典中消除重复值键

2025年05月04日11unruledboy

我有以下字典,

>>> 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)}