У меня есть следующая структура данных словаря 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, правильно ли это?
Я просто сделал бы ряд списка ключей, тогда выполняют итерации по ним в новый 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]