Pythonでリストをインデックスと値の辞書に変換する方法
Pythonでは、リストを「インデックス」と「値」を対応付けた辞書形式に変換したいケースがあります。このような場合、組み込み関数のenumerateとシンプルな反復処理(イテレーション)を組み合わせることで、簡単に実現できます。
サンプルコード
以下に具体的な実装例を示します。
my_list = [32, 0, 11, 99, 223, 51, 67, 28, 12, 94, 89]
print("リストの内容:")
print(my_list)
my_list.sort(reverse=True)
print("降順ソート後のリスト:")
print(my_list)
index, value = "index", "values"
my_result = {index : [], value : []}
for id, vl in enumerate(my_list):
my_result[index].append(id)
my_result[value].append(vl)
print("変換結果:")
print(my_result)実行結果
リストの内容:
[32, 0, 11, 99, 223, 51, 67, 28, 12, 94, 89]
降順ソート後のリスト:
[223, 99, 94, 89, 67, 51, 32, 28, 12, 11, 0]
変換結果:
{'index': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'values': [223, 99, 94, 89, 67, 51, 32, 28, 12, 11, 0]}処理の解説
- まず、整数値を含むリストを定義し、その内容をコンソールに出力します。
- 次に、
sort(reverse=True)を使ってリストを降順に並べ替え、結果を表示します。 - 表示用のキーとして、「index」(インデックス)と「values」(値)という文字列を初期化します。
enumerate関数を使ってリストを反復処理し、各要素のインデックスと値をそれぞれ空のリストに追加していきます。- 最終的に、インデックスと値が対応付けられた辞書として結果が出力されます。
補足:enumerate関数について
enumerateは、リストなどのイテラブルなオブジェクトに対して、要素と同時にそのインデックス番号を取得できる便利な組み込み関数です。第2引数に開始番号を指定することも可能で、例えばenumerate(my_list, start=1)とすれば、インデックスを1から始めることもできます。インデックスと値をペアで扱いたい場面で頻繁に活用されるため、覚えておくと非常に役立ちます。
-
Pythonのzip()関数で辞書とリストを組み合わせる方法
Pythonのzip()関数で辞書とリストを組み合わせる方法Pythonでは、組み込み関数zip()を使うことで、辞書のキーと値のペア(key-value pair)と、リスト内の対応する要素を1つずつペアにしてまとめることができます。複数のシーケンスを並行して処理したい場合に非常に便利な機能です。基本的な使い方まず、辞書のitems()メソッドでキーと値のペアを取得し、それをzip()に渡します。>>> dictionary = {A: 1, B: 2, C: 3} >>> num_list = [1, 2, 3] >>> zipped
-
【初心者向け】Pythonの辞書(dict)をリストに変換する3つの方法
Pythonの辞書をリストに変換するには? Pythonの辞書(dict)クラスには、リストへの変換に便利なメソッドが3つ用意されています。それぞれitems()、keys()、values()で、以下のようなビューオブジェクトを返します。 items():キーと値のペア(タプル)で構成されるビューオブジェクト keys():キーのみで構成されるビューオブジェクト values():値のみで構成されるビューオブジェクト これらのビューオブジェクトは、組み込み関数 list() を使うことで、簡単にリストオブジェクトへ変換できます。 実際のコード例 以下は、辞書から各ビューオブジェクトを取