Pythonで辞書を使ってリスト内の要素をマッピングする方法
Pythonでは、ネストされたリスト(マトリックス)の各要素を、あらかじめ定義した辞書を使って別の値に変換したいケースがあります。たとえば、数値のコードを対応する文字列に置き換えたい場合などです。
このような処理を行うには、シンプルな反復処理(イテレーション)を使用します。以下に具体的な実装例を示します。
サンプルコード
my_list = [[2, 4, 3], [4, 1, 3], [2, 1, 3, 4]]
print("The list :")
print(my_list)
map_dict = {2 : "Python", 1: "fun", 3 : "to", 4 : "learn"}
my_result = []
for index in my_list:
temp = []
for element in index:
temp.append(map_dict[element])
my_result.append(temp)
print("The result is :")
print(my_result)出力結果
The list : [[2, 4, 3], [4, 1, 3], [2, 1, 3, 4]] The result is : [['Python', 'learn', 'to'], ['learn', 'fun', 'to'], ['Python', 'fun', 'to', 'learn']]
コードの解説
- まず、リストの中にリストが入った「リストのリスト」を定義し、コンソールに表示します。
- 次に、数値と文字列の対応関係を定義したマッピング用の辞書
map_dictを作成します。 - 最終的な結果を格納するための空のリスト
my_resultを用意します。 - 外側のループで元のリストを1行ずつ取り出し、内側のループでその行の各要素を順番に処理します。
- 各要素をキーとしてマッピング辞書から対応する値を取得し、一時的なリスト
tempに追加していきます。 - 1行分の変換が完了したら、
tempを結果リストに追加します。これをすべての行に対して繰り返します。 - 最終的に変換されたリストがコンソールに出力されます。
補足:リスト内包表記を使った簡潔な書き方
同じ処理は、リスト内包表記を使うことでより簡潔に記述できます。
my_result = [[map_dict[element] for element in row] for row in my_list]
このように書くことで、コードが短くなり、意図も明確になります。ただし、初心者のうちはforループによる段階的な記述の方が処理の流れを理解しやすいでしょう。
-
【Python入門】リスト・タプル・辞書の違いを徹底解説
Pythonの3大コレクション:リスト、タプル、辞書 Pythonには複数のデータをまとめて扱うためのコレクション型が用意されています。中でもよく使われるのがリスト(list)、タプル(tuple)、辞書(dict)の3つです。それぞれ特徴が異なるため、用途に応じて使い分けることが重要です。 基本的な違いの概要 リストとタプルはシーケンス(順序付き)オブジェクトであり、要素を順番に並べて管理します。一方、辞書はキーと値のペアを格納するハッシュテーブル構造です。 リストとタプルは「順序を持つコレクション」ですが、辞書は「順序を持たないコレクション」として扱われます。 リストと辞書はミュータブ
-
Pythonでzip()と内包表記を使ってリストから辞書を作成する方法
Pythonでは、2つのリスト(キーと値)を組み合わせて辞書を作成したい場面がよくあります。この記事では、組み込み関数 zip() と dict()、さらにPython 3.xで利用できる辞書内包表記を使った2つの方法をわかりやすく解説します。 方法1:dict()とzip()を組み合わせる zip() はPythonの組み込み関数で、複数のリストから同じインデックス位置にある要素を取り出し、タプルのペア(イテレータ)として返します。一方のリストをキー、もう一方を値とすれば、このzipオブジェクトを組み込み関数 dict() に渡すだけで、簡単に辞書オブジェクトを構築できます。 >&