第 6 章: Python の基本データ構造 - 辞書
辞書は、Python の最も基本的なデータ構造です。
ディクショナリは別の変更可能なコンテナ モデルであり、あらゆるタイプのオブジェクトを格納できます。
ディクショナリの各キーと値のkey=>valueペアはコロン: で区切られ、各ペアはコンマ ( , ) で区切られ、ディクショナリ全体が中括弧{}で囲まれます。
辞書は Python キーワードおよび組み込み関数として使用され、変数名に dict という名前を付けることはお勧めできません。
キーは一意である必要がありますが、値は一意ではありません。
値は任意のデータ型を取ることができますが、キーは文字列や数値など、不変である必要があります。
1. 辞書の概要
-
辞書とは何ですか
- 辞書は Python の最も基本的なデータ構造の1 つであり、リストと同様に変更可能なシーケンスです。
- データはキーと値のペアの形式で保存され、辞書は順序付けられていないシーケンスになります。
-
辞書の模式図
- 辞書の実装原理
- 辞書の実装原理は辞書を引く場合と似ています。辞書を引くとは、まず部首またはピンインに基づいて対応するページ番号を調べます。Python の辞書は、次のように値の位置を調べます。鍵
第二に、辞書の作成
-
最も一般的な方法: 中括弧を使用する
- コードデモ
"""1、使用{}创建字典""" scores = { "张三": 100, "李四": 98, "王五": 88} print(scores) print(type(scores))
-
組み込み関数 dict() を使用する
- コードデモ
"""2、使用内置函数dict()创建""" student = dict(name="tom", age=19) print(student)
-
空の辞書を作成する
- コードデモ
"""创建一个空字典""" dict3 = { } print(dict3)
3. 辞書の共通操作
3.1 辞書内の要素の取得
-
要素を取得するメソッド
辞書要素を取得するメソッド 例 違い [] スコア[「張三」] []指定されたキーが辞書に存在しない場合、KeyError 例外がスローされます。 get() メソッド スコア.get("張三") get() メソッドは値を受け取ります。指定されたキーが辞書に存在しない場合は、 KeyError をスローせずにNone を返します。指定されたキーが存在しない場合に返される
ように、パラメータを通じてデフォルトの Value を設定できます。- コードデモ
"""获取字典中的元素""" scores = { "张三": 100, "李四": 98, "王五": 88} """第一种方式,使用[]""" print(scores["张三"]) """第二种方式,使用get()方法""" print(scores.get("张三")) """差异性""" # print(scores["阿萨德"]) print(scores.get("阿萨德")) print(scores.get("阿达", 99))
3.2 辞書の要素の判定
-
辞書のキーの判断
メソッドステートメント 説明する で 指定されたキーが辞書に存在する場合はTrue を返します ありませんで 指定されたキーが辞書に存在しない場合はTrue を返します。 - コードデモ
"""key的判断""" scores = { "张三": 100, "李四": 98, "王五": 88} print("张三" in scores) print("张三" not in scores) print("阿达" in scores) print("阿达" not in scores)
3.3 辞書の要素の削除、追加、変更
- コードデモ
"""删除指定的key——value"""
del scores["张三"]
print(scores)
# 清空字典所有元素
scores.clear()
print(scores)
"""字典元素的新增操作"""
scores["柯蓝"] = 100
print(scores)
"""字典元素的修改操作"""
scores["柯蓝"] = 10
print(scores)
3.4 辞書の表示を取得する
- 辞書ビューを取得する 3 つの方法
方法 | 説明する |
---|---|
鍵() | 辞書内のすべてのキーを取得する |
値() | 辞書内のすべての値を取得します |
アイテム() | 辞書内のすべてのキーを取得します: vaule キーと値のペア |
- コードデモ
scores = {
"张三": 100, "李四": 98, "王五": 88}
"""获取所有的key"""
keys = scores.keys()
print(keys)
print(type(keys))
# 将所有的key组成的视图转换成列表
print(list(keys))
print("\n")
"""获取所有的value"""
values = scores.values()
print(values)
print(type(values))
print(list(values))
print("\n")
"""获取所有的key-value"""
items = scores.items()
print(items)
print(type(items))
print(list(items)) # 转换之后的列表元素有元组组成
3.5 辞書要素の走査
- コードデモ
scores = {"张三": 100, "李四": 98, "王五": 88}
"""字典元素的遍历"""
for item in scores:
print(item)
print(item, scores[item], scores.get(item))
第四に、辞書の特徴
- ディクショナリ内のすべての要素はキーと値のキーと値のペアです。キーの繰り返しは許可されませんが、値の繰り返しは許可されます。
- 辞書内の要素は順序付けされていません
- 辞書内のキーは不変オブジェクトである必要があります
- 辞書は必要に応じて動的に拡張することもできます
- 辞書は大量のメモリを浪費します。時間に対して空間を使用するデータ構造です。
五、辞書の世代
辞書生成式、以下「辞書生成式」
-
組み込み関数zip()を呼び出します。
- 反復可能なオブジェクトをパラメータとして受け取り、オブジェクト内の要素をタプルにパックし、これらのタプルのリストを返すために使用されます。
-
コードデモ
"""已知两个列表,生成一个字典
items = ['Fruits', 'Books', 'Others']
prices = [96, 78, 85,100,200]
"""
items = ['Fruits', 'Books', 'Others']
prices = [96, 78, 85,100,45566]
d = {
item.upper(): price for item, price in zip(items, prices)}
print(d)
# 如果用于生成的两个列表中的参数个数不相等,取较小的一个