如何从嵌套字典中删除具有重复值的字典 [英] How to remove dictionaries with duplicate values from a nested dictionary

查看:179
本文介绍了如何从嵌套字典中删除具有重复值的字典的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含键值对的字典,其中的值也是字典:

I have a dictionary that contains key value pairs where the values are also dictionaries:

{ 
    'item1':{'name':'filename', 'size':1024},
    'item2':{'name':'filename', 'size':1024},
    'item3':{'name':'diff_filename', 'size':1024},
    'item4':{'name':'diff_filename', 'size':1024}
}

我想删除字典中值重复的文件名"字段,从而得到结果的项目:

I want to remove items in the dictionary that have duplicate 'filename' fields in their values giving me the result:

{ 
    'item1':{'name':'filename', 'size':1024},
    'item3':{'name':'diff_filename', 'size':1024}
}

推荐答案

使用辅助set跟踪您已经看到的文件名:

Use an auxiliary set to track what filenames you have seen already:

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

这篇关于如何从嵌套字典中删除具有重复值的字典的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆