Pythonでサフィックス付きの金額表記を数値に変換する方法
「5Cr」や「7M」のように、単位を表すサフィックス(接尾辞)が付いた金額表記を、実際の数値へと変換したいケースはよくあります。このような場合、各サフィックスに対応する倍率を定義した辞書を用意し、それを反復処理しながら replace メソッドを使って文字列部分を取り除き、数値へと変換します。
サフィックスの意味
本記事で扱う主なサフィックスとその意味は以下の通りです。
- K:キロ(1,000)
- M:ミリオン/百万(1,000,000)
- B:ビリオン/十億(1,000,000,000)
- Tr:トリリオン/一兆(1,000,000,000,000)
- L:ラーク(Lakh、南アジアで使われる10万の単位)
- Cr:クロール(Crore、南アジアで使われる1,000万の単位)
コード例
以下に具体的な実装例を示します。
my_list = ["5Cr", "7M", "9B", "12L", "20Tr", "30K"]
print("元のリスト:")
print(my_list)
value_dict = {"M": 1000000, "B": 1000000000, "Cr": 10000000,
"L": 100000, "K": 1000, "Tr": 1000000000000}
my_result = []
for element in my_list:
for key in value_dict:
if key in element:
val = float(element.replace(key, "")) * value_dict[key]
my_result.append(val)
print("変換後の数値リスト:")
print(my_result)
出力結果
元のリスト: ['5Cr', '7M', '9B', '12L', '20Tr', '30K'] 変換後の数値リスト: [50000000.0, 7000000.0, 9000000000.0, 1200000.0, 20000000000000.0, 30000.0]
処理の流れの解説
まず、サフィックス付きの金額文字列を含むリストを定義し、コンソールに表示します。
次に、各サフィックスに対応する倍率を値として持つ辞書を定義します。
変換結果を格納するための空のリストを作成します。
元のリストの各要素に対して反復処理を行い、さらにその内部で辞書の各キーについても反復処理を行います。
要素の中にそのキー(サフィックス)が含まれている場合は、
replaceメソッドでサフィックスを除去し、残りの数字部分をfloat型に変換した上で、辞書の対応する倍率を掛け合わせます。計算結果はいったん変数に代入されます。
その変数の値を、あらかじめ用意しておいた空のリストに
appendメソッドで追加していきます。すべての要素の処理が完了すると、数値化されたリストが完成し、最終的な結果としてコンソールに表示されます。
なお、この方法では辞書のキーの走査順序に依存するため、「M」と「Million」のように一方が他方を部分的に含むようなサフィックスが混在する場合は注意が必要です。より堅牢にしたい場合は、正規表現(re モジュール)を使ってサフィックスを抽出すると安全です。
-
Pythonでタプルのリストを辞書に変換する方法を解説
Pythonでは、キーと値のペアを持つタプルのリストを、簡単に辞書(dict)へ変換できます。本記事では、setdefault()メソッドやdict()コンストラクタを使った変換方法を、具体例とともにわかりやすく解説します。 変換のイメージ まずは、どのような変換が行われるのかを見てみましょう。タプルのリストの各要素の第1引数が辞書の「キー」に、第2引数が「値」に対応します。 入力: [(Adwaita, 5), (Aadrika, 5), (Babai, 37), (Mona, 7), (Sanj, 25), (Sakya, 30)] 出力: {Adwaita: 5, Aadr
-
【初心者向け】Pythonの辞書(dict)をリストに変換する3つの方法
Pythonの辞書をリストに変換するには? Pythonの辞書(dict)クラスには、リストへの変換に便利なメソッドが3つ用意されています。それぞれitems()、keys()、values()で、以下のようなビューオブジェクトを返します。 items():キーと値のペア(タプル)で構成されるビューオブジェクト keys():キーのみで構成されるビューオブジェクト values():値のみで構成されるビューオブジェクト これらのビューオブジェクトは、組み込み関数 list() を使うことで、簡単にリストオブジェクトへ変換できます。 実際のコード例 以下は、辞書から各ビューオブジェクトを取