我有一个包含键值对的字典,其值也是字典:
{
'item1':{'name':'filename', 'size':1024},
'item2':{'name':'filename', 'size':1024},
'item3':{'name':'diff_filename', 'size':1024},
'item4':{'name':'diff_filename', 'size':1024}
}
我想删除字典中在其值中包含重复“filename”字段的项目,从而为我提供结果:
{
'item1':{'name':'filename', 'size':1024},
'item3':{'name':'diff_filename', 'size':1024}
}
答案 0 :(得分:4)
使用辅助set
来跟踪您已经看过的文件名:
seen = set()
{k: v for k, v in yourdict.iteritems()
if v['name'] not in seen and (seen.add(v['name']) or True)}
或者,作为循环更具可读性:
seen = set()
filtered = dict()
for k, v in yourdict.iteritems():
if v['name'] in seen:
continue
seen.add(v['name'])
filtered[k] = v