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行で初期化と追加を同時に処理できます。リスト内のデータをグループ化して辞書へマッピングする際の定番パターンとして覚えておくと便利です。
-
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
-
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