Python
 Computer >> コンピューター >  >> プログラミング >> Python

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ループによる段階的な記述の方が処理の流れを理解しやすいでしょう。

  1. 【Python入門】リスト・タプル・辞書の違いを徹底解説

    Pythonの3大コレクション:リスト、タプル、辞書 Pythonには複数のデータをまとめて扱うためのコレクション型が用意されています。中でもよく使われるのがリスト(list)、タプル(tuple)、辞書(dict)の3つです。それぞれ特徴が異なるため、用途に応じて使い分けることが重要です。 基本的な違いの概要 リストとタプルはシーケンス(順序付き)オブジェクトであり、要素を順番に並べて管理します。一方、辞書はキーと値のペアを格納するハッシュテーブル構造です。 リストとタプルは「順序を持つコレクション」ですが、辞書は「順序を持たないコレクション」として扱われます。 リストと辞書はミュータブ

  2. Pythonでzip()と内包表記を使ってリストから辞書を作成する方法

    Pythonでは、2つのリスト(キーと値)を組み合わせて辞書を作成したい場面がよくあります。この記事では、組み込み関数 zip() と dict()、さらにPython 3.xで利用できる辞書内包表記を使った2つの方法をわかりやすく解説します。 方法1:dict()とzip()を組み合わせる zip() はPythonの組み込み関数で、複数のリストから同じインデックス位置にある要素を取り出し、タプルのペア(イテレータ)として返します。一方のリストをキー、もう一方を値とすれば、このzipオブジェクトを組み込み関数 dict() に渡すだけで、簡単に辞書オブジェクトを構築できます。 >&