1. ホーム
  2. python

[解決済み] Pythonでmapを使ったリスト処理中にアイテムのインデックスを取得する

2023-04-27 12:09:25

質問

map()を使ってリストを処理する際、ラムダ内でアイテムのインデックスにアクセスしたい。どのようにそれを行うことができますか?

例えば

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))

の上にリスト内包やジェネレータ式を使うことを強くお勧めします。 maplambda を使うことができます。リスト内包はより可読性が高く、起動も速い傾向があります。