Вы можете использовать такое list
понимание:
result = [{**page, 'author': get_author(page['url'])}
for page in pages]
# This works too:
result = [dict(**page, author=get_author(page['url']))
for page in pages]
# but is less preferred because it will fail for input containing non-string keys
Это создает новый dict
для каждого оригинала dict
с дополнительным ключом author
, основанным на значении get_author
применительно к значению, соответствующему клавише url
.
Обратите внимание, что оно не изменяет оригинал list
.
Пример:
def get_author(i):
if i == 1:
return 'hello'
else:
return 'bye'
pages = [{'url': 1},
{'url': 2}]
result = [{**page, **{'author': get_author(page['url'])}} for page in pages]
print(result)
Выход:
[{'url': 1, 'author': 'hello'}, {'url': 2, 'author': 'bye'}]