day05辞書
今日エグゼクティブサマリー
- 辞書 - 非常に重要です
- 辞書のネスト
昨日の要約
リスト
- 大量のデータを格納するためのリストには、キーワードのリストです
- リストには、変数と秩序(利用可能な位置決め索引参照)で、反復することができ
- リストを増やす(拡張、挿入、追加)
- 一覧(削除、ポップ、明確な、デル)の削除
- リストを変更(LST [インデックス] =値、スライスすることができます)
- (循環のためのインデックス、)リストを表示して下さい
タプル
- タプルは、キーワードの不変のリストであるタプルです
- タプルは不変、反復も、注文しました
範囲
- デジタルループ、反復
- パイソン2は、Python 3の範囲自体を返し、リストを返します
- 範囲(開始位置:終了位置:工程)にかかわらず、丁ケア
- 範囲(終了位置)
今日の詳細な内容
辞書
私たちは、次の例を見てみましょう:
name_lst = ["新力", "一帆", "海绵", "秀"]
id_lst = [18, 9, 25, 50]
その中でも、リストはname_lst
、同級生の名前で保存されているid_lst
学校の生徒に対応する数に保存されています。例えば、新力
学校の数です18
。
私たちはソニーの学校を検索したい場合は、リストで見つかった別の学校の数に行くには、例えば、そのインデックスの値に対応します。
name_lst[0]
id_lst[0]
このような操作は、私たちのニーズを満たすが、どうやら多少面倒にするが。そして、(このような操作を行って、データの挿入や削除など)インデックスの変更のリストのいずれかと、それ以外の場合は、混乱を引き起こすだろう、他のリストにも同じ変更を行う必要があります。
私たちはこのタイプの動作を実行するために辞書を使用する場合は、そのようなトラブルを避けることができます。
辞書は、Pythonでの基本データ型のいずれかです。辞書は、{}のデータ・タイプのキーと値のペアを含む、唯一の使用です。データ・ディクショナリは、キーと値のペアです。
Pythonで辞書のキーですdict
、リストに格納されたデータの量が多い大量のデータを格納するための辞書。
辞書は、データとデータの間の可能な関連です。
辞書の定義方法は、次のようになります。dic = {'键': '值'}
具体的な例は次のとおりです。
dic = {"新力": ["开车", "唱", "跳"], "一帆": 9, 25: "海绵", True: "秀", (1, 2, 3): "大圣"}
対応する値は、結合により正確に求めることができます。
print(dic["新力"])
ここ概念を追加します哈希
:
- 変数のデータ型はハッシュ化されていません
- データ型は不変ハッシュ
整数、文字列、ブールおよびタプル:;不変のデータ型のリストや辞書:現在、我々は、変数のデータ型を学びました。
辞書のキーは不変データ型でなければならない(すなわち、ハッシュ可能)とユニーク(辞書のキーは一つだけであることができます)。辞書には、以前のペアを上書きするキーの後ろに、重複キーが表示された場合。
辞書値は、データの任意のタイプであってもよいです。
辞書には、変数のデータ型そのものです。
dic = {{'a': 1}: 'alex'}
print(dic)
Traceback (most recent call last):
File "C:/Users/Sure/PyProject/day05/01 exercise.py", line 54, in <module>
dic = {{'a': 1}: 'alex'}
TypeError: unhashable type: 'dict'
辞書は、データ型のハッシュではありませんので、上記のコードが間違って与えられます実行します。言い換えれば、辞書は可変です。
辞書の要素の増加
操作の辞書を増加させることができるdic["键"] = "值"
の実装の仕方:
dic = {"key": 1}
dic["alex"] = 89
print(dic)
输出的内容为:{'key': 1, 'alex': 89}
同じキーに存在する辞書場合、割り当てが新しい値に対応する元のキー値に置き換えられますので、アプローチの方法により、変数割り当ての増加はやや「暴力的」です。
dic = {'key': 1, 'alex': 18}
dic["alex"] = 89
print(dic)
输出的内容为:{'key': 1, 'alex': 89}
比較的「柔らかい」要素辞書法を増加もあります.setdefault()
。元の辞書が同じキーを持っている場合は、このようにして、戻り値がキー値に対応する変更され、動作が変更されません。この値は、元の辞書に存在しない場合は、新しいペアを追加します。デフォルト値は、None
あなたにも加算する値をカスタマイズすることができ、。キー範囲に対応する新しい値が増加された後。例えば:
dic = {'key': 1}
print(dic.setdefault('key'))
print(dic.setdefault('meet'))
print(dic.setdefault('alex', 89))
print(dic)
输出的结果为:
1
None
89
{'key': 1, 'meet': None, 'alex': 89}
以下のために.setdefault()
何で、何が返されるの最終辞書の値に対応するキー:戻り値、あなたはこれを覚えています。
.setdefault()
この方法は2つの段階で行われます。
- 第1辞書ルックアップを減算することにより、キーが存在する場合、それは第二のステップを続行しないであろう対応する値が返され、キーが存在しない場合、戻り値は、デフォルトでは、キーに割り当てられる
None
第2工程を実行します。 - 辞書にキーと値を追加します。
辞書を削除します。
メイン辞書の削除.clear()
、.pop()
、.popitem()
およびdel
4つの方法を。
.clear()
空の辞書に使用される方法は、この方法の使用は、空の辞書になります。
dic = {'key': 1, 'dsb': 'alex'}
dic.clear() # 字典是可变数据类型,可以直接用方法来修改,不必重新赋值
print(dic)
输出的结果为:{}
.pop()
メソッドは、パラメータとして削除する入力キーを必要とし、対応する削除キー値を返します。
dic = {'key': 1, 'dsb': 'alex'}
print(dic.pop('key'))
.popitem()
これは、ランダムに削除されます。しかし、Pythonの3とPython 2の最新バージョンでは、最後のキーと値のペアを削除するには、デフォルトの辞書は、戻り値はタプルを削除するための鍵である(タプルが、のではなくことに注意して.pop()
同じ値が戻され):
dic = {'key': 1, 'dsb': 'alex'}
print(dic.popitem())
输出的结果为:('dsb', 'alex')
そして、異なるのリストは、辞書にないremove
方法。
辞書のdel
使用状況やメソッドのリストを削除するキーを指定しなかった場合、それは全体の辞書を削除します、非常に似ています。
dic = {'key': 1, 'dsb': 'alex'}
del dic
print(dic)
Traceback (most recent call last):
File "C:/Users/Sure/PyProject/day05/01 exercise.py", line 80, in <module>
print(dic)
NameError: name 'dic' is not defined
DICが完全に削除されているため、コードの後、エラーを実行します。
また、特定のキーと値のペアを削除するキーの方法を指定することができます。
dic = {'key': 1, 'dsb': 'alex'}
del dic['dsb']
print(dic)
输出的结果是:{'key': 1}
辞書の変更
修飾された辞書の2つの形態が第1の力は、方法で増加させる、あるdic['键'] = '值'
修飾キーが既に存在するため、第二には、ことによる.update()
2つの辞書方法をマージ。
使用dic['键'] = '值'
指定されたキーが新しい値に置き換えられますキー値に対応し、辞書に存在する場合、変更します:
dic = {"key":1,"dsb":"alex"}
dic["dsb"] = "Alex" # 修改
dic["ss"] = "Alex" # 增加
print(dic)
输出的结果为:{'key': 1, 'dsb': 'Alex', 'ss': 'Alex'}
.update()
2つの辞書をマージする方法。update
レベル入力辞書は、以前の辞書よりも高くなっています。新しい入力キーが既に新しい値に対応するキー上の辞書に存在している場合つまり、古い値を置き換えます:
dic = {'key': 1, 'dsb':'alex'}
dic.update({'key': 2, 'meet': 23})
print(dic)
输出的结果为:{'key': 2, 'dsb': 'alex', 'meet': 23}
辞書引き
辞書は、直接そのキー値によって参照することができますが、この方法は、比較的「暴力」を検索している:キーがある場合、対応する値を返します。キーが存在しない場合、プログラムは文句を言うでしょう。
dic = {'key': 1, 'dsb': 'alex'}
print(dic['dsb']) # 返回'dsb'
print(dic['alex']) # 程序报错
ないため、時には我々が使用する必要があり、文句を言うでしょうがないときにキーを見つけるために、この直接法の.get()
:;キーが存在しない場合は、いずれも返さない、キー、バックキーに対応する値がある場合:この方法は、
dic = {'key': 1, 'dsb': 'alex'}
print(dic['dsb']) # 返回'dsb'
print(dic['alex']) # 返回None
私たちも存在しない値を返すために、キーを変更することができます。
print(dic.get("alex","没有找到啊"))
私たちはすることもでき.keys()
、.values()
および.items()
辞書のキー、値、およびペアのすべてを取得するための方法。戻り値は、これらの3つの方法の一種である高仿列表
が、反復インデックスをサポートすることはできません。私たちは、リスト機能により、共通のリストに高い模倣のリストに戻ることができます。
dic = {'key': 1, 'dsb': 'alex'}
print(dic.keys())
print(dic.values())
print(dic.items())
for i in dic.keys():
print(i)
print(list(dic.values()))
また、それは辞書のキーを横断します、ループ反復の辞書のために使用することができます。
dic = {'key': 1, 'dsb': 'alex'}
for i in dic:
print(i)
脱構築
私達はちょうど辞書言及した.items()
方法は、キーと値のペアキータプルのタプルのリストを返します。
dic = {'key': 1, 'dsb': 'alex'}
print(dic.items())
输出的内容为:dict_items([('key', 1), ('dsb', 'alex')])
私たちは、キーと値のペア、タプルの形で各キーと値のペアのリストを取得します。
今、我々は彼らのすべての要素を抽出する必要がある場合は、これを行うことができます:
dic = {'key': 1, 'dsb': 'alex'}
lst = list(dic.items())
print(lst[0][0])
print(lst[0][1])
print(lst[1][0])
print(lst[1][1])
可能性が、非常に面倒なものの、我々は建設のこのメソッドを使用する必要があります。
次のように基本的なスタイルの構造は次のとおりです。
a, b = (10, 20)
print(a)
print(b)
見ることができる、10
及び20
値がそれぞれに割り当てられているa
とb
。データのこの方法は、それぞれ等号変数、解体の前に等号の右側に割り当てられました。
次の例を見てください:
a, b = '你好'
print(a)
print(b)
a
するには、Get 你
、b
に着きます好
。言い換えれば、構造も、ないタプルのみに適用された文字列に適用されます。実際には、限り、反復可能なオブジェクトとして、それを解体するために使用することができます。
a,b,c = [10,20,30]
print(a)
print(b)
print(c)
a,b = {"key":1,"key2":2}
print(a)
print(b)
反復中に辞書は、それが唯一のキーを返しますが、値を返さないとき、それを注意してください。
構造要素の等しい数の左右の式の変数の数は、そうでない場合はエラーになります場合。
あなたは要素の多くを受け取るために、少数の変数を使用したい場合は、私たちが必要*
となります最終面の複数の要素であることを聚合
。
a, b, *c = (1, 2, 3, 4, 5, 6)
print(a)
print(b)
print(c)
输出的结果是:
1
2
[3, 4, 5, 6]
3
、4
、5
そして6
統一されている打包
とc
、打包
データがされた後列表
の形態で保存されます。
前の辞書に戻る.items()
方法は、構造体の方法ならば、我々は簡単にキーと値のペアの内容をプリントアウトすることができ、使用の値を返します。
dic = {'key1': 1, 'key2': 2, 'key3': 3, 'key4': 4}
for k, v in dic.items():
print(k, v)
输出的内容为:
key1 1
key2 2
key3 3
key4 4
辞書のネスト
以下、このような辞書があります:
house = {
101:{1:{"皮裤男":{"某女":["小钢炮"],"国际章":["熊大","熊二"]},
2:{"林俊杰":["磨牙"]}}},
102:{1:{"皮裤女":{"林宥嘉":["说谎","你是我的眼"]}},
2:{"王菲":["天后","传奇","红豆","笑忘书"]}},
103:{1:{"韦小宝":{"阿珂":"刺客","建宁":"公主","双儿":"丫鬟","教主老婆":"龙儿"}},
2:{"张无忌":{"灭绝师太":"倚天剑","金毛狮王":"屠龙刀","张三丰":"太极拳"}}},
104:{1:{"西游记":{"大圣":"金箍撸撸棒","唐僧":"叨逼叨","八戒":"高老庄主任"}}},
105:{1:{"水浒传":{"武松":"打老虎","鲁智笙":"拔树","林冲":"教头","宋江":"老大"}},
2:{"官场":{"高俅":"足球"}}},
106:{1:{"老男孩":{"alex":"dsb","wusir":"污","宝元":"大卡车","江毅":"兽"}}},
}
どの見つけるには単語と単語を、我々は見つけることができます:"倚天剑"
剑
"熊大"
熊
print(house[103][2]['张无忌']['灭绝师太'][2])
print(house[101][1]['皮裤男']['国际章'][0][0])
上記の例から、我々は辞書が大きな利点のリストと比較されていることを確認できます。
- より便利な辞書が何であるかを見つけます
- 辞書引き速いです
辞書はまた、フロー制御のプロセスを簡素化することができます。
私たちはこのようなプログラムは、ユーザーの入力数を設計する必要がある場合たとえば、プログラムが自動的に料理の数に対応返します。実施された場合、我々は条件文を使用している場合は非常に面倒なことになります。
while True:
choose = int(input("请输入数字(1-12):"))
if choose == 1:
print('饺子')
elif choose == 2:
print('粥')
elif choose == 3:
print('面条')
elif choose == 4:
print('肉')
elif choose == 5:
print('土')
elif choose == 6:
print('东南风')
elif choose == 7:
print('切糕')
elif choose == 8:
print('烤全羊')
elif choose == 9:
print('烤骆驼')
elif choose == 10:
print('锅包肉')
elif choose == 11:
print('杀猪菜')
elif choose == 12:
print('乱炖')
else:
print('输入错误,请重新输入!')
私たちは辞書のアプローチを使用している場合は、ちょうどあなたができるよう:
dic = {"1":"饺子",
"2":"粥",
"3":"面条",
"4":"肉",
"5":"土",
"6":"东南风",
"7":"切糕",
"8":"烤全羊",
"9":"烤骆驼",
"10":"锅包肉",
"11":"杀猪菜",
"12":"乱炖"
}
while True:
choose = input("请输入数字(1-12):")
if choose in dic:
print(dic[choose])
else:
print('输入错误,请重新输入!')
私たちは、多くのコードを節約するだけでなく、はるかに少ないコードの重複、その後、辞書を使用し、参照してください。後で増加または削除リストする必要がある場合は、辞書のみで動作する必要がある、あなたは、プログラム、ポストメンテナンス、より便利に変更を加える必要はありません。