使用map()处理列表时,我想在lambda中访问该项目的索引。我怎样才能做到这一点?
例如
ranked_users = ['jon','bob','jane','alice','chris'] user_details = map(lambda x: {'name':x, 'rank':?}, ranked_users)
在上面的示例中,如何获取每个用户的排名?
使用枚举:
In [3]: user_details = [{'name':x, 'rank':i} for i,x in enumerate(ranked_users)] In [4]: user_details Out[4]: [{'name': 'jon', 'rank': 0}, {'name': 'bob', 'rank': 1}, {'name': 'jane', 'rank': 2}, {'name': 'alice', 'rank': 3}, {'name': 'chris', 'rank': 4}]
PS。我的第一个答案是
user_details = map(lambda (i,x): {'name':x, 'rank':i}, enumerate(ranked_users))
我强烈建议使用列表理解或发电机表达过map和lambda只要有可能。列表理解更具可读性,并且往往更快地启动。
map
lambda