Удаление дубликатов из словаря

У меня есть следующая структура данных словаря Python 2.7 (я не контролирую исходные данные - они взяты из другой системы как есть):

{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']
   },
 112765083670: ...
}

Ключи словаря всегда будут уникальными. Dst, src и alias могут быть дубликатами. Все записи всегда будут иметь dst и src, но не каждая запись обязательно будет иметь псевдоним, как видно из третьей записи.

В данных примера любая из первых двух записей будет удалена (для меня не имеет значения, какая именно). Третья запись будет считаться уникальной, поскольку, хотя dst и src одинаковы, в ней отсутствует псевдоним.

Моя цель - удалить все записи, где dst, src и alias были продублированы - независимо от ключа.

Как этот новичок может этого добиться?

Кроме того, мое ограниченное понимание Python интерпретирует структуру данных как словарь со значениями, хранящимися в словарях... dict of dicts, правильно ли это?

31
задан Ken Y-N 5 December 2016 в 23:33
поделиться

1 ответ

Я просто сделал бы ряд списка ключей, тогда выполняют итерации по ним в новый 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']
   }
}

filter = list(set(list(input_raw.keys())))

fixedlist = {}

for i in filter:
    fixedlist[i] = logins[i]
0
ответ дан 27 November 2019 в 22:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: