Разве это не то, что вы хотите?
entries_expanded[:] = [
dict((entry['id'], myfunction(entry['supplier'])))
for entry in entries_expanded
]
Вы можете думать об этом как о генераторе, который создает кортежи, за которыми следует понимание списка, которое составляет словари:
entryiter = ((entry['id'], entry['supplier']) for entry in entries_expanded)
tupleiter = ((id, myfunction(supplier)) for id, supplier in entryiter)
entries_expanded[:] = [dict(t) for t in tupleiter]
В качестве альтернативы, как следует из другого ответа:
entryiter = ((entry['id'], entry['supplier']) for entry in entries_expanded)
tupleiter = ((id, myfunction(supplier)) for id, supplier in entryiter)
entries_expanded[:] = [
dict((('id', id), ('supplier', supplier)))
for id, supplier in tupleiter
]