Как проверить появление ключа словаря в другом списке и создать новый выводPython

Программы на Python
Ответить
Anonymous
 Как проверить появление ключа словаря в другом списке и создать новый вывод

Сообщение Anonymous »

У меня есть список и словарь, например:
mydict = {
'some-id-string1': {'name': 'Saeed1', 'phone': '+989307333730', 'id': 'abc'},
'some-id-string2': {'name': 'Saeed2', 'phone': '+989307333731', 'id': 'def'},
'some-id-string3': {'name': 'Saeed3', 'phone': '+989307333732', 'id': 'ghi'},
'some-id-string4': {'name': 'Saeed3', 'phone': '+989307333733', 'id': 'jkl'},
'some-id-string5': {'name': 'Saeed3', 'phone': '+989307333730', 'id': 'abc'},
'some-id-string6': {'name': 'Saeed3', 'phone': '+989307333730', 'id': 'abc'},
'some-id-string7': {'name': 'Saeed3', 'phone': '+989307333731', 'id': 'def'},

}
mylist = [
{'id': 'abc', 'name': 'some_name1'},
{'id': 'def', 'name': 'some_name2'},
{'id': 'ghi', 'name': 'some_name3'},
]

Я проверю, соответствует ли значение id mydict моему списку, и добавлю имя моего списка
Я проверю, соответствует ли значение id mydict моему списку code> в mydict. Если его там нет, у меня будет два вывода (потому что в настоящее время я не уверен, какой из них сохранить, поэтому мне придется принять решение позже):
Ожидаемый результат 1, если имя существует, и добавить NOT_FOUND для тех, у кого нет соответствующего имени:
newmydict1 = {
'some-id-string1': {'name': 'Saeed1', 'phone': '+989307333730', 'id': 'abc', 'id_name': 'some_name1'},
'some-id-string2': {'name': 'Saeed2', 'phone': '+989307333731', 'id': 'def', 'id_name': 'some_name2'},
'some-id-string3': {'name': 'Saeed3', 'phone': '+989307333732', 'id': 'ghi', 'id_name': 'some_name3'},
'some-id-string4': {'name': 'Saeed3', 'phone': '+989307333733', 'id': 'jkl', 'id_name': 'NOT_FOUND'},
'some-id-string5': {'name': 'Saeed3', 'phone': '+989307333730', 'id': 'abc', 'id_name': 'some_name1'},
'some-id-string6': {'name': 'Saeed3', 'phone': '+989307333730', 'id': 'abc', 'id_name': 'some_name1'},
'some-id-string7': {'name': 'Saeed3', 'phone': '+989307333731', 'id': 'def', 'id_name': 'some_name2'},
}

Ожидаемый результат 2, если имя существует, и создать новый список для тех, у кого нет соответствующего имени:
newmydict2 {
'some-id-string1': {'name': 'Saeed1', 'phone': '+989307333730', 'id': 'abc', 'id_name': 'some_name1'},
'some-id-string2': {'name': 'Saeed2', 'phone': '+989307333731', 'id': 'def', 'id_name': 'some_name2'},
'some-id-string3': {'name': 'Saeed3', 'phone': '+989307333732', 'id': 'ghi', 'id_name': 'some_name3'},
'some-id-string5': {'name': 'Saeed3', 'phone': '+989307333730', 'id': 'abc', 'id_name': 'some_name1'},
'some-id-string6': {'name': 'Saeed3', 'phone': '+989307333730', 'id': 'abc', 'id_name': 'some_name1'},
'some-id-string7': {'name': 'Saeed3', 'phone': '+989307333731', 'id': 'def', 'id_name': 'some_name2'},
}
newmydict3 = {
'some-id-string4': {'name': 'Saeed3', 'phone': '+989307333733', 'id': 'jkl'},
}

Не знаю, что делать и что писать, потому что ключ mydict (я имею в виду некоторую-id-строку) не существует в моем списке, а также некоторые элементы mydict['id'] встречаются более одного раза.
Я пробовалnew = [{
'string_id': d,
'id': l['id'],
'id_name': l['name'],
'phone': mydict[d]['phone'],
'name': mydict[d]['name']
} for l in mylist for d in mydict if mydict[d]['id'] == l['id']
]


Подробнее здесь: https://stackoverflow.com/questions/791 ... create-new
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»