背景: 定数の名前のリストを返す必要がある既存のクラスに新しい関数を追加しています。
クラスにいくつかの定数があるとしましょう
JOHN = 1
SMITH = 4
BEN = 8
...
[1,4,8]
また、次のようなより意味のあるデータを返すのではなく、リストの定数値を返す Web サービス関数があります。['JOHN', 'SMITH', 'BEN']
効率の良いやり方とは?
map()
マッピング辞書と一緒に使用できます。
arg_map = {1 : 'JOHN', 4 : 'SMITH', 8 : 'BEN'}
translated_result = map(arg_map.get, result_list)
コメントで述べたように、リスト内包表記もここで機能します。角括弧を括弧に置き換えることで、これをジェネレーターにすることができることに注意してください。
arg_map = {1 : 'JOHN', 4 : 'SMITH', 8 : 'BEN'}
translated_result = [arg_map.get(val, '%s NOT MAPPED' % str(val)) for val in result_list]