Getting index of item while processing a list using map in python

后端 未结 4 1455
刺人心
刺人心 2020-12-14 14:39

While processing a list using map(), I want to access index of the item while inside lambda. How can I do that?

For example

ranked_users = [\'jon\',\         


        
4条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-14 14:45

    Use enumerate:

    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. My first answer was

    user_details = map(lambda (i,x): {'name':x, 'rank':i}, enumerate(ranked_users))
    

    I'd strongly recommend using a list comprehension or generator expression over map and lambda whenever possible. List comprehensions are more readable, and tend to be faster to boot.

提交回复
热议问题