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

Pythonプログラム入門:リストから辞書(dict)を作成する方法

Pythonでリストのデータをもとに辞書を作成したい場合、「dict」メソッドで空の辞書を生成し、シンプルな反復処理(ループ)と「setdefault」メソッドを組み合わせることで実現できます。

setdefaultメソッドは、指定したキーが辞書に存在しない場合にデフォルト値を設定し、存在する場合はそのキーの現在の値を返す便利なメソッドです。キーごとに複数の値をリスト形式で保持したい場合に特に役立ちます。

サンプルコード

以下に具体的な実装例を示します。

my_dict = dict()
print("空の辞書が作成されました")

my_value_list = ['15', '14', '13', '12', '16']

print("元のリストの内容 : ")
print(my_value_list)

my_value_list.sort()
print("ソート後のリスト :")
print(my_value_list)

for value in my_value_list:
    for element in range(int(value), int(value) + 2):
        my_dict.setdefault(element, []).append(value)

print("結果として得られた辞書 : ")
print(my_dict)

実行結果

空の辞書が作成されました
元のリストの内容 :
['15', '14', '13', '12', '16']
ソート後のリスト :
['12', '13', '14', '15', '16']
結果として得られた辞書 :
{12: ['12'], 13: ['12', '13'], 14: ['13', '14'], 15: ['14', '15'], 16: ['15', '16'], 17: ['16']}

コードの解説

  • まず「dict()」メソッドを使って空の辞書を作成します。

  • 文字列型の数値を要素とするリストを定義し、コンソールに表示します。

  • sort()」メソッドでリストを昇順にソートし、その結果を表示します。

  • リストを反復処理しながら、各値に対して「range(int(value), int(value) + 2)」で生成した連続する2つの整数をキーとして扱います。

  • setdefault」メソッドにより、キーが存在しない場合は空のリスト「[]」をデフォルト値として設定し、そこへ元の値を追加(append)していきます。

  • 最終的に完成した辞書が変数に格納され、結果としてコンソールに出力されます。

ポイントまとめ

この手法の利点は、キーの存在確認を自分で行う必要がない点です。if key not in dictのような条件分岐を書かずとも、setdefaultを使えば1行で初期化と追加を同時に処理できます。リスト内のデータをグループ化して辞書へマッピングする際の定番パターンとして覚えておくと便利です。

  1. Pythonの辞書(ディクショナリ)からすべての値をリストとして取得する方法

    Pythonの辞書に格納されたすべての値をリスト形式で取得したい場合、最もシンプルな方法は dict.values() メソッドを使うことです。このメソッドは辞書内のすべての値を返すため、list() 関数で囲むことで簡単にリストへ変換できます。values() メソッドを使った基本的な例my_dict = {name: TutorialsPoint, time: 15 years, location: India} value_list = list(my_dict.values()) print(value_list)出力結果上記のコードを実行すると、次のような出力が得られます。[Tuto

  2. Pythonの辞書からすべてのキーをリストとして取得する方法

    Pythonの辞書(dict)からすべてのキーをリストとして取得したい場合、最もシンプルな方法は dict.keys() メソッドを使うことです。このメソッドは辞書内のすべてのキーを含むビューオブジェクトを返すため、list() で囲むことで簡単にリストへ変換できます。keys()メソッドを使う例my_dict = {name: TutorialsPoint, time: 15 years, location: India} key_list = list(my_dict.keys()) print(key_list)出力実行すると、次のような結果が得られます。[name, time, loc