Я пробую простой код на python, где у меня есть список словарей, и я буду фильтровать значение по ключу среди словарей.
Мой список словарей такой:
Mylist = [
{"data": "two.mail-in.daimler.com.", "ttl": 3600, "type": "MX"},
{"data": "two.mail-in.daimler.com.", "ttl": 3600},
{"data": "two.mail-in.daimler.com.", "ttl": 3600, "type": "A"},
]
Я хочу извлечь словарь, в котором пара ключ-значение имеет вид «тип»: «A». Для этого я использую код операции:
a = list(filter(lambda type: type['type'] == 'A', Mylist))
Нетпроблема с этим кодом.Дело в том, что 2-й словарь не имеет ключа с именем «Тип», поэтому он генерирует исключение KeyError, и программы останавливаются без проверки 3-го словаря или 2-го индекса списка.
То, что я хочу, эточтобы игнорировать ошибку ключа во 2-м словаре, проверить 3-й словарь и распечатать словарь, который имеет значение ключа "type" = "A"
Поэтому я попытался использовать try / исключением.
Mylist = [
{"data": "two.mail-in.daimler.com.", "ttl": 3600, "type": "MX"},
{"data": "two.mail-in.daimler.com.", "ttl": 3600},
{"data": "two.mail-in.daimler.com.", "ttl": 3600, "type": "A"},
]
IP_Data =[]
for dicti in Mylist:
try:
a = list(filter(lambda type: type['type'] == 'A', Mylist))
IP_Data.append(a)
except:
continue
print(IP_Data)
input()
Я сделал результат хранения в другом списке с именем IP_Data.когда я запускаю код, я получаю результат в виде пустого массива, т. е. [] Может кто-нибудь сказать мне, почему, почему это происходит, и любой способ сделать весь словарь хранить внутри массива, значение ключа которого равно type = A
ps Я также пытался пройти вместо продолжения, но у меня все та же проблема.
Спасибо.