Meiner Meinung nach ging es um die Kartenfunktion, und die bevorzugte Antwort ist teilweise richtig, da Syntaxfehler durch das Setzen von Tupelargumenten auf Lambda verursacht wurden lambda (i,x)
Idee der Aufzählung ist schön und richtige Lösung wäre:
map(lambda x: {'name':x[1], 'rank':x[0]}, enumerate(ranked_users))
und etwas Zeit, um Geschwindigkeit mit Verständnis zu vergleichen:
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))
Testergebnis: Das Listenverständnis ist in diesem Testfall etwa 1,31-mal schneller als die Karte