À mon avis, la question portait sur la fonction de carte et la réponse préférée est en partie correcte en raison d'une erreur de syntaxe causée par l'ajout de l'argument tuple à lambda lambda (i,x)
l'idée d'énumérer est agréable et la solution appropriée serait :
map(lambda x: {'name':x[1], 'rank':x[0]}, enumerate(ranked_users))
et un peu de temps pour comparer la vitesse avec la compréhension :
def with_map():
ranked_users = range(10 ** 6)
list(map(lambda x: {'name': x[1], 'rank': x[0]}, enumerate(ranked_users)))
def by_comprehension():
ranked_users = range(10 ** 6)
[{'name': x, 'rank': i} for i, x in enumerate(ranked_users)]
from timeit import timeit
time_with_map = timeit(with_map, number=10)
time_with_comprehension = timeit(by_comprehension, number=10)
print('list comprehension is about %.2f x faster than map in this test case' % (time_with_map/time_with_comprehension))
résultat du test : la compréhension de la liste est environ 1,31 x plus rapide que la carte dans ce cas de test