从字典中删除重复项


问题内容

我具有以下Python 2.7字典数据结构(我不控制源数据-照原样来自另一个系统):

{112762853378: 
   {'dst':['10.121.4.136'], 
    'src':['1.2.3.4'], 
    别名:['www.example.com']
   },
 112762853385: 
   {'dst':['10.121.4.136'], 
    'src':['1.2.3.4'], 
    别名:['www.example.com']
   },
 112760496444: 
   {'dst':['10.121.4.136'], 
    'src':['1.2.3.4']
   },
 112760496502: 
   {'dst':['10.122.195.34'], 
    'src':['4.3.2.1']
   },
 112765083670:...
}

字典键将始终是唯一的。Dst,src和别名可以重复。所有记录都将始终具有dst和src,但并非每个记录都必然具有别名,如第三条记录所示。

在样本数据中,前两个记录中的任何一个都将被删除(对我来说无关紧要)。第三条记录将被认为是唯一的,因为尽管dst和src相同,但是缺少别名。

我的目标是删除所有重复了dst,src和别名的记录-不管键如何。

这个 新秀 如何做到这一点?

另外,我对Python的有限理解将数据结构解释为字典,字典中存储的值…字典的dict,这是正确的吗?


问题答案:

您可以遍历字典中的每个项目(键值对),然后将它们添加到结果字典中(如果值不在结果字典中)。

input_raw = {112762853378: 
   {'dst': ['10.121.4.136'], 
    'src': ['1.2.3.4'], 
    'alias': ['www.example.com']
   },
 112762853385: 
   {'dst': ['10.121.4.136'], 
    'src': ['1.2.3.4'], 
    'alias': ['www.example.com']
   },
 112760496444: 
   {'dst': ['10.121.4.136'], 
    'src': ['1.2.3.4']
   },
 112760496502: 
   {'dst': ['10.122.195.34'], 
    'src': ['4.3.2.1']
   }
}

result = {}

for key,value in input_raw.items():
    if value not in result.values():
        result[key] = value

print result