0

私はこの問題を解決しようとしています:私はいくつかのシンボルを持っています:

 list =["RBS-UK", "GOOG-US"]

ここで、「UK」のすべてのリージョンオカレンスを「GB」に変換する必要があります。私はこれを簡単に行うことができました:

 new_list =[]
 for symbol in list :
    temp_list=symbol.split("-")
    if temp_list[1]=="UK":
         temp_list[1]="GB"
     new_list.append("-".join(temp_list))

しかし、私は平等の比較なしでこれを行うことができますか?

私は次のようなものを探しています:

 some_dict={}
 new_list =[]
 for symbol in list :
    temp_list=symbol.split("-")
    temp_list[1]=some_dict(temp_list[1])  # So this dict returns GB if its UK else returns same value as it is 
    new_list.append("-".join(temp_list))

これを行うことは可能ですか、それとも他の解決策はありますか?

4

5 に答える 5

2

うん!承知しました

ls =['RBS-UK','GOOG-US']
map(lambda x: x.replace('-UK', '-GB'), ls)
于 2013-03-21T13:50:46.130 に答える
1

実際にオフセットを再定義する必要はありません。文字列を置き換えるだけです。

for symbol in list:
    symbol = symbol.replace('-UK','-GB')

文字列が検出された場合は置き換えられ、それ以外の場合は完全にそのままになります。

于 2013-03-21T13:51:00.167 に答える
1

辞書が機能するルックアップを探しています。

translations = {'UK':'GB'} # and so on
for symbol in lst:
    country_code = symbol.split('-')[1]
    translated = translations.get(country_code,country_code)
    new_list.append('{}-{}'.format(symbol.split('-')[0],translated))

キーラインは次のとおりです。

translated = translations.get(country_code,country_code)

辞書には、キーが見つからない場合get()に返されるメソッドがあります。Noneを上げるのを避けるためにこれを使用しますKeyError。キーが見つからない場合get()を除いて、値が返されるオプションの2番目のパラメーターを取ります。None

上記のスニペットでは、国コードをに渡し、get()利用可能な翻訳がない場合は同じ国コードを返すように依頼し、そうでない場合は翻訳を返します。

2行目は、文字列フォーマットを使用して、翻訳されたコードで元のシンボルを再構築し、リストに追加します。

于 2013-03-21T13:54:29.813 に答える
0

正規表現演算に役立つモジュールのsub関数を使用できます。re

これがあなたが望むリストを生み出すワンライナーです:

import re
newlist = [re.sub('UK','GB', symbol) for symbol in list]
于 2013-03-21T13:52:42.293 に答える
0

本当にを使用したい場合は、キーが見つからないときに使用されるデフォルトの引数を受け入れるメソッドをdict使用できます。つまり、「存在する場合は関連付けられた値を返し、そうでない場合は返す」という意味になります。dict.getsome_dict.get(x,x)xx

>>> some_dict = {"UK": "GB"}
>>> country = "UK"
>>> some_dict.get(country, country)
'GB'
>>> country = "CA"
>>> some_dict.get(country, country)
'CA'
于 2013-03-21T13:52:55.107 に答える