Pythonでリストを値に持つ辞書を作成する方法
Pythonの辞書(dict)は、順序を持たず、変更可能で、キーによって管理されるコレクションです。辞書は波括弧 {} を使って記述し、各要素は「キー」と「値」のペアで構成されます。角括弧内にキー名を指定することで、対応する値にアクセスできます。
この記事では、値としてリストを持つ辞書を作成する代表的な4つの方法を、コード例とともにわかりやすく解説します。
1. 空の辞書を作り、値としてリストを追加する
最も基本的な方法です。空の辞書を定義し、キーに対して直接リストを代入します。
# 空の辞書を作成
myDict = {}
# 値としてリストを追加
myDict["key1"] = [1, 2]
myDict["key2"] = ["Vishesh", "For", "Python"]
print(myDict)出力結果
{'key2': ['Vishesh', 'For', 'Python'], 'key1': [1, 2]}2. 既存のリストに別のリストを追加する(append)
append() メソッドを使うと、すでに登録されているリストの中に、さらに別のリストをネスト(入れ子)して追加できます。
# 空の辞書を作成
myDict = {}
# 値としてリストを追加
myDict["key1"] = [1, 2]
# 追加用のリストを作成
lst = ['vishesh', 'For', 'python']
# リストをサブリストとして追加
myDict["key1"].append(lst)
print(myDict)出力結果
{'key1': [1, 2, ['vishesh', 'For', 'python']]}3. setdefault() メソッドを使う方法
setdefault() を使うと、キーが存在しない場合に自動的に空のリストを作成し、そこへ要素を追加できます。ループ処理と組み合わせると、複数のキーと値を効率的に構築できます。
# dict() で空の辞書を作成
myDict = dict()
# リストを作成
valList = ['1', '2', '3']
# リストの要素を反復処理
for val in valList:
for ele in range(int(val), int(val) + 2):
myDict.setdefault(ele, []).append(val)
print(myDict)出力結果
{1: ['1'], 2: ['1', '2'], 3: ['2', '3'], 4: ['3']}この例では、数値ごとに対応する文字列がリスト形式でまとめられており、グループ化処理などに応用できます。
4. リスト内包表記を使う方法
簡潔なコードで辞書を作りたい場合は、dict() とジェネレータ式(内包表記)を組み合わせる方法が便利です。
# リスト内包表記でリストの辞書を作成
d = dict((val, range(int(val), int(val) + 2))
for val in ['1', '2', '3'])
print(d)出力結果
{'1': [1, 2], '3': [3, 4], '2': [2, 3]}まとめ
- 直接代入:シンプルで可読性が高く、基本的な使い方に最適。
- append():既存のリストに要素やリストを追加したい場合に有効。
- setdefault():キーの存在確認を自動的に行いたい場合に便利。
- 内包表記:短いコードで効率的に辞書を生成できる。
用途に応じてこれらの方法を使い分けることで、Pythonでのデータ操作をより柔軟かつ効率的に行えます。
-
Pythonで順序付き辞書(OrderedDict)を作成する方法
OrderedDictとは Pythonのcollectionsモジュールには、要素が追加された順序を記憶する辞書のサブクラス「OrderedDict」が用意されています。通常の辞書とは異なり、キーと値のペアが挿入された順番を正確に保持するため、順序が重要になる処理に適しています。 基本的な使い方 まずcollectionsモジュールからOrderedDictをインポートし、既存の辞書の項目を渡すことで生成できます。 >>> from collections import OrderedDict >>> d = {banana: 3, apple: 4,
-
Pythonでネストされた辞書(入れ子のdict)を作成する方法
Pythonの辞書(dict)オブジェクトはミュータブル(変更可能)です。この特性を利用すると、ある辞書の「値」として、別の辞書オブジェクトをそのまま格納することができます。このように、キーに対応する値としてさらに辞書が定義されている構造を、ネストされた辞書(入れ子構造の辞書)と呼びます。ネストされた辞書の基本構文ネストされた辞書は、外側のキーに対して、波括弧 {} で囲まれた新しい辞書を値として指定するだけで作成できます。>>> students={"student1":{"name":"Raaj", "