23

このリストを考えると

my_lst = ['LAC', 'HOU', '03/03 06:11 PM', '2.13', '1.80', '03/03 03:42 PM']

辞書の値に応じてその値0thと値を変更したい:1st

def translate(my_lst):
    subs = {
        "Houston": "HOU", 
        "L.A. Clippers": "LAC",

    }

したがって、リストは次のようになります。

['L.A. Clippers', 'Houston', '03/03 06:11 PM', '2.13', '1.80', '03/03 03:42 PM']
4

5 に答える 5

30

すべての値が一意である場合は、最初に辞書を逆にして効率的な解決策を得る必要があります。

>>> subs = {
...         "Houston": "HOU", 
...         "L.A. Clippers": "LAC",
... 
...     }
>>> rev_subs = { v:k for k,v in subs.iteritems()}
>>> [rev_subs.get(item,item)  for item in my_lst]
['L.A. Clippers', 'Houston', '03/03 06:11 PM', '2.13', '1.80', '03/03 03:42 PM']

選択したインデックスのみを更新しようとしている場合は、次を試してください。

indexes = [0, 1]
for ind in indexes:
    val =  my_lst[ind]
    my_lst[ind] = rev_subs.get(val, val)
于 2013-06-25T11:13:10.713 に答える
9

値が一意の場合、辞書を反転できます。

subs = {v:k for k, v in subs.iteritems()}

次に.get()、キーがディクショナリにない場合に備えて、2 番目のパラメータとともに、ディクショナリから値を取得するために使用できます。

print map(subs.get, my_lst, my_lst)

版画:

['L.A. Clippers', 'Houston', '03/03 06:11 PM', '2.13', '1.80', '03/03 03:42 PM']
于 2013-06-25T11:18:44.557 に答える
2

dict を逆にして、リストの最初の 2 つの要素にルックアップを適用します。

subs = {
    "Houston": "HOU", 
    "L.A. Clippers": "LAC",

}

my_lst = ['LAC', 'HOU', '03/03 06:11 PM', '2.13', '1.80', '03/03 03:42 PM']
my_lst[:2] = map(dict(zip(subs.values(), subs)).get, my_lst[:2])
print my_lst
于 2013-06-25T11:25:50.807 に答える