0

値も辞書であるキーと値のペアを含む辞書があります。

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

値に「ファイル名」フィールドが重複しているディクショナリ内のアイテムを削除して、結果を取得したい:

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

1 に答える 1

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
于 2012-08-13T10:28:56.343 に答える