データ型Pythonの学習(DIC)

辞書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']['总管'] )

おすすめ

転載: www.cnblogs.com/jjzz1234/p/10991474.html