辞書3.8
3.8.1はじめ辞書
ディクショナリ(辞書)Pythonはマップの唯一のタイプである。彼は、キーが一意辞書であるに{}のキーと値のペアで囲まれています。保存する場合、キーのメモリアドレスに応じて算出され、このアドレスに格納されたキー値は、このアルゴリズムは、ハッシュアルゴリズムと呼ばれています。そのため、辞書にキーに保存されたキー値がハッシュでなければならない、あなたはハッシュを変えることができないが、それはハッシュが変更できないことを意味します。これは、指定された正確なメモリアドレスを計算するためです。既知のハッシュ可能(非可変)データタイプ:INT、STR、タプル、ブール値
(可変)データ型ハッシュない:リスト、辞書を設定
構文:
** {KEY1:VALUE1、KEY2:VALUE2。 ...}
注:**キーは不変でなければならない(ハッシュ可能)は、値が必要とされていないです。キーの存在により、辞書のクエリ効率が非常に高いので、あなたは、任意のタイプのデータを保存することができます。
dic = {123: 456, True: 999, "id": 1, "name": 'sylar', "age": 18, "stu": ['帅哥', '美女'], (1, 2, 3): '麻花藤'}
#合法
print(dic[123])
print(dic[True])
print(dic['id'])
print(dic['stu'])
print(dic[(1, 2, 3)])
#不合法
dic = {{1: 2}: "哈哈哈"} # dict是可变的. 不能作为key
dic = {[1, 2, 3]: '周杰伦'} # list是可变的. 不不能作为key
dic = {{1, 2, 3}: '呵呵呵'} # set是可变的, 不能作为key
dictの保存されたデータは、我々はそれに追加された順序に従ってに格納されていない、注文ハッシュテーブルに保存され、ハッシュテーブルが連続していないので、あなたが仕事をスライスすることはできません、それだけで辞書内のキーデータを通じて取得することができます
3.8.2辞書関連の操作
1.増加
一般:DIC [キー] =値
#增加
dic = {}
dic['name'] = '周润发' # 如果dict中没有出现这个key, 就会新增一个key-value的组合进dict
dic['age'] = 18
print(dic)
かけがえのない:dic.setdefault( 'キー'、 '値')
キーが既に辞書に登場していた場合、このコマンドは動作して増加することができません。
# 如果dict中没有出现过这个key-value. 可以通过setdefault设置默认值
dic.setdefault('盖伦') # 也可以往里面设置值
dic.setdefault("盖伦", "德玛西亚") # 如果dict中已经存在了,那么setdefault将不会起作用
print(dic)
2.削除
dic.popitem()#は直ちに削除します
dic.pop(「キー」)位の向きを削除します
ドック[キー] #del删
dic.clear()空#
注意:反復プロセスでの場合は辞書ではなく、削除操作、反復は順序付けられていないので。
3.変更、およびクエリ
修正
DIC [ 'キー']は、新しい値を=
dic.update(DIC2)キーはDICでDIC、新しいキーと値のペアに存在しない場合DIC2;#1 DIC2キーDICにおけるキー、置換値と一致DICがない場合DIC2キーは変更されないままにするキーです。
お問い合わせ
印刷(DIC [キー])の不在を与えられている#key
プリント(戻り(キー、キーはdic.getコンテンツが存在しない)戻り値はカスタマイズ可能である場合には存在しないNoneを返し#key
SetDefault() 。。(何の表情キーが直接の問い合わせがある場合は、ありません、そうでない場合、新しい値を返す)## 1は、追加の値を2にキー戻り値を
4.ループ
辞書トラバーサル --keys()
###字典的遍历
dic = {'盖伦':'德玛西亚','戴安娜':'月光女神','猴哥':'齐天大圣'}
print(dic.keys()) #因列表的形式输出
for key in dic.keys():
print(key) #拿到key
print(dic[key]) #拿到value,实现对value的遍历
辞書トラバーサル--values()
注:キーで値で値を見つけることができますが、鍵を見つけることができません!!
dic = {'盖伦':'德玛西亚','戴安娜':'月光女神','猴哥':'齐天大圣'}
print(dic.values()) #通过value是拿不到Key的
for value in dic.values(): #只能遍历value
print(value)
辞書トラバーサル - アイテムへの鍵()
dic = {'盖伦':'德玛西亚','戴安娜':'月光女神','猴哥':'齐天大圣'}
print(dic.items())
for item in dic.items():
print(item) #输出的是元组
print(item[0],item[1])
辞書トラバーサル - 脳道路清チーバージョン
まず、パッケージソリューション小さな知識、数が変数の数は、フロントでなければならず、アンパックの後ろに一致している必要があります解凍します
a,b = (10,20) #解构,解包,元组、列表都具有该功能
print(a)
print(b)
###前边变量的个数必须与后边解包的个数必须一致
実現:あなたが事業のキーと値を含む、辞書を横断する必要があり、直接のバージョンが最良の選択であります
#含蓄版
dic = {'盖伦':'德玛西亚','戴安娜':'月光女神','猴哥':'齐天大圣'}
for item in dic.items():
k,v = item
print(k)
print(v)
#直接版
dic = {'盖伦':'德玛西亚','戴安娜':'月光女神','猴哥':'齐天大圣'}
for k,v in dic.items():
print(k)
print(v)
辞書トラバーサルの反復バージョン--key
オブジェクト辞書は、それ自体であるため、反復ループは、直接のために行うことができます
#先看一下如果直接对字典进行迭代的话会是什么情况
dic = {'盖伦':'德玛西亚','戴安娜':'月光女神','猴哥':'齐天大圣'}
for el in dic:
print(el) #直接输出的只有Key,那么是不是可以用key把value给印出来呢?
print(dic[el]) #答案是可以的
ネストされた辞書
ネストされた辞書を書くとき、それはまた、カンマを追加することを忘れない要素と要素の間に留意すべき。
dic = {
'name' : '盖伦',
'age' : 24,
'slogan' :'德玛西亚',
'family': {
'皇子' : '嘉文四世',
'总管' : '赵信',
'女警' : {
'name' : '凯特琳',
'age' : 23 ,
'slogan':'我,miss,怎么可能'
}
} ,
'equipment': [
{'num1':'黑切','use':'kill','gank':'Yes'},
{'num2':'日炎','use':'堆肉','gank':'No'}
]
}
print(dic['equipment'][1]['gank']) #查看盖伦第二个装备是否适合gank
dic['family']['总管'] = dic['family']['总管'] + '总管' #修改德邦的信息
print(dic['family']['总管'] )