Объединение значений Python
Доброго времени суток!
Есть список словарей:
local = [{'Client': [70, 242],
'description': 'name123',
'userNotes': 'snq'},{'Client': [70, 169],
'description': 'name234',
'userNotes': 'e123123'}]
local_2 = [{'descriptionTag': 'Test1', 'Client': 169},
{'descriptionTag': 'Test2', 'Client': 242},
{'descriptionTag': 'Test3', 'Client': 70}]
Подскажите, пожалуйста, как правильно можно соединить значение 'Client' ? В первом словаре есть 'Client' и список чисел, а во втором есть расшифровка этих чисел.
В итоге должно получиться так:
local = [{'Client': ['Test3', 'Test2'],
'description': 'name123',
'userNotes': 'snq'},
{'Client': ['Test3', Test1],
'description': 'name234',
'userNotes': 'e123123'}]
- нужно условие если не нашел ключ во втором поставил ' No key ' Недавно начал изучать питон, не знаю как правильно еще описать.
Ответы (1 шт):
Автор решения: AivanF.
→ Ссылка
Начните с толковых наименований переменных, а то в дебрях этих local'ов легко запутаться (: Переименовал, не уверен, что в соответствии с вашей задаче, но работать с кодом стало куда проще. А для решения подобных задач часто бывает полезным создавать промежуточные структуры данных и функции, которые упростят последующий алгоритм, в данном случае это client_to_tag и update_user_clients:
users = [{
'Client': [70, 242],
'description': 'name123',
'userNotes': 'snq'
}, {
'Client': [70, 169],
'description': 'name234',
'userNotes': 'e123123'
}]
tags = [
{'descriptionTag': 'Test1', 'Client': 169},
{'descriptionTag': 'Test2', 'Client': 242},
{'descriptionTag': 'Test3', 'Client': 70},
]
client_to_tag = {
d['Client']: d['descriptionTag']
for d in tags
}
def update_user_clients(user):
user = {**user}
user['Client'] = [
client_to_tag[client]
for client in user['Client']
]
return user
updated_users = [
update_user_clients(user)
for user in users
]
print(updated_users)