python dict辞書の詳細

36781 ワード

リストと同様に、辞書も多くのデータの集合であり、可変シーケンスタイプに属します.異なる点は、無秩序な可変シーケンスであり、保存された内容は「キー値ペア」として保存されていることです.
辞書では、各要素に対応するインデックスをキー(key)と呼び、各キーに対応する要素を値(value)と呼び、キーとその関連する値をキー値ペアと呼ぶのが習慣です.辞書のタイプは学生時代によく使われた新華辞書に似ている.新華字典の音節表を通じて、探したい漢字をすばやく見つけることができることを知っています.このうち、辞書の音節表は辞書タイプのキーに相当し、キーに対応する漢字は値に相当する.
 
表1 Python辞書の特徴
主な特徴
説明する
インデックスではなくキーで要素を読み込む
辞書タイプは、関連配列またはハッシュリストとも呼ばれる場合があります.一連の値をキーで関連付けることで、辞書から指定したアイテムをキーで取得できますが、インデックスでは取得できません.
ディクショナリは任意のデータ型の無秩序な集合です
リスト、メタグループとは異なり、通常、インデックス値0に対応する要素を最初の要素と呼びます.辞書の要素は無秩序です.
辞書は可変で、任意にネストできます
ディクショナリは、元の場所で成長または短縮できます(コピーを生成する必要はありません)、ディクショナリが格納する値がリストまたは他のディクショナリであっても、任意の深さのネストをサポートします.
辞書のキーは一意でなければなりません
辞書では、同じキーが複数回表示されることはサポートされていません.そうしないと、最後のキー値ペアのみが保持されます.
辞書のキーは可変でなければなりません
辞書の値は可変ではなく、数値、文字列、またはメタグループのみが使用でき、リストは使用できません.
Pythonの辞書タイプはJavaまたはC++のMapオブジェクトに相当します.
 
1)カッコ構文辞書の作成
辞書の各要素には、キーと値の2つの部分が含まれています.したがって、辞書を作成するときは、キーと値の間にコロンで区切られ、隣接する要素の間にカンマで区切られ、すべての要素がカッコで区切られます.Python辞書タイプの構文フォーマットは次のとおりです.
key:valuenは、各要素のキー値ペアを表します.同じ辞書の各要素のキー値は一意でなければならないことに注意してください.
dictname = {'key':'value1','key2':'value2',...,'keyn':valuen}

 
 
[root@kube dict]# cat demo.py 
#coding:utf-8

scores = {'  ':89,'  ':100,'  ':90}
print(type(scores))
a_scores = {'  ':89,'  ':(44,55),'  ':[90,66]}          #key          
print(a_scores)


[root@kube dict]# py demo.py 
<class 'dict'>
{'  ': 89, '  ': (44, 55), '  ': [90, 66]}
[root@kube dict]# 

 
 
2)fromkeys()メソッドによる辞書の作成
Pythonでは、dict辞書タイプで提供されるfromkeys()メソッドを使用して、すべてのキー値が空の辞書を作成することもできます.このメソッドの構文フォーマットは、次のとおりです.
dictname = dict.fromkeys(list,value=None)
[root@kube dict]# cat demo1.py 
s_name = {'  ','  ','  '}
scores = dict.fromkeys(s_name)
print(type(scores))
print(scores)
[root@kube dict]# py demo1.py 
<class 'dict'>
{'  ': None, '  ': None, '  ': None}
[root@kube dict]#

3)dict()マッピング関数による辞書の作成
dict()関数による辞書の作成方法は複数あり、表2には、同じ辞書aを作成する一般的ないくつかの方法が羅列されている.
表2 dict()関数辞書の作成
書式の作成
注意事項
>>> a = dict(one=1,two=2,three=3)
ただし、one、two、threeは文字列ですが、この方法で辞書を作成する場合は、文字列に引用符を付けることはできません.
>>demo=[('two',2),('one',1),('three',3)]#方式1>>>>demo=['two',2],['one',1],['three',3]]方式2>>>>demo=((('two',2),('one',1),('three',3))#方式3>>demo=(['two',2],['one',1],['three',3])#方式4>>a=dict(demo)
dict()関数にリストまたはメタグループが入力され、その要素はそれぞれ2つの要素を含むリストまたはメタグループであり、最初の要素はキーとして、2番目の要素は値として使用されます.
>>demokeys=['one','two','three']#文字列またはメタグループであってもよい>>demovalues=[1,2,3]#文字列またはメタグループ>>a=dict(zip(demokeys,demovalues))
dict()関数とzip()関数を適用すると、最初の2つのリストを対応する辞書に変換できます.
上記のいずれの方法で辞書を作成しても、辞書の各要素のキーは文字列、メタグループ、または数値のみであり、リストではありません.
 
python辞書へのアクセス
リスト、メタグループとは異なり、アクセス要素は下付きで表示され、辞書はキーで対応する要素値にアクセスします.
           ,       、    ,                。

Pythonはdictタイプで提供されるget()メソッドを使用して指定したキーの値を取得することを推奨します.get()メソッドの構文フォーマットは、次のとおりです.
dict.get(key[,default])
[root@kube dict]# cat demo1.py 
scores = {'  ':60,'  ':70,'  ':80}
print(scores.get('  '))
print(scores.get('  '))     #  get      
del scores                   #del     
print(scores)

[root@kube dict]# py demo1.py 
60
80
Traceback (most recent call last):
  File "demo1.py", line 5, in 
    print(scores)
NameError: name 'scores' is not defined
[root@kube dict]# 

python dict辞書の基本操作
辞書は可変シーケンスに属するため、辞書のキー値ペア(key-valueペア)を任意に操作できます.Pythonでは、一般的な辞書操作は以下のとおりです.
  • 既存の辞書に新しいキー値ペアを追加します.
  • 既存の辞書のキー値ペアを変更します.
  • 既存の辞書から指定したキー値ペアを削除します.
  • は、既存の辞書に指定されたキー値ペアが存在するか否かを判断する.


  • Python辞書キー値ペアの追加
         dict      ,        key     。            :
    dict[key] = value 

     
    表1 Python辞書キー値対構文パラメータの追加
    パラメータ
    意味
    dict
    辞書の名前を表します.
    key
    要素を追加するキーを示します.新しい要素を追加する以上、この要素のキーと辞書の既存の要素のキーが互いに異なることを保証します.
    value
    データを追加することを示す値は、Pythonがサポートするデータ型であればOKです.
     
    [root@kube dict]# cat demo2.py 
    a = dict()             #  duict           
    print(a)
    print(type(a))          
    a['  '] = 100          #       key       value ,          
    a['  '] = 80
    a['  '] = 90
    print(a)
    a['  '] = 88888         #    key            key  value 
    print(a)
    del a['  ']              #      key  ,      key      value
    print(a)
    
    [root@kube dict]# py demo2.py 
    {}
    <class 'dict'>
    {'  ': 100, '  ': 80, '  ': 90}
    {'  ': 88888, '  ': 80, '  ': 90}
    {'  ': 88888, '  ': 80}
    [root@kube dict]# 

     
     
    python辞書dict完全攻略
    ディクショナリのデータ型はdictです.dir(dict)を使用して、クラスにどのようなメソッドが含まれているかを確認できます.
    >>> dir(dict)
    ['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
    >>> 

     
     
    python keys(),values(),items()関数
    この3つの方法を一緒に紹介したのは、辞書の特定のデータを取得するために使われているからです.keys()メソッドは、辞書内のすべてのキーを返すために使用されます.values()メソッドは、辞書内のすべてのキーに対応する値を返すために使用されます.items()は、辞書内のすべてのキー値ペアを返すために使用されます.
    [root@kube dict]# cat demo3.py 
    scores = {'  ':60,'  ':70,'  ':80}
    
    print(scores.keys())
    print(scores.values())
    print(scores.items())
    [root@kube dict]# py demo3.py 
    dict_keys(['  ', '  ', '  '])
    dict_values([60, 70, 80])
    dict_items([('  ', 60), ('  ', 70), ('  ', 80)])
    [root@kube dict]# 

     
    [root@kube dict]# 
    [root@kube dict]# cat  demo4.py 
    a = {'  ': 95, '  ': 89, '  ': 90}
    for k in a.keys():
        print(k,end=' ')
    print("
    ---------------
    ") for v in a.values(): print(v,end=' ') print("
    ---------------
    ") for k,v in a.items(): print("key:",k," value:",v) [root@kube dict]# py demo4.py --------------- 95 89 90 --------------- key: value: 95 key: value: 89 key: value: 90 [root@kube dict]#

     
     
    python copyメソッド
    copy()メソッドは、同じキー値ペアを持つ新しい辞書を返すために使用されます.
    [root@kube dict]# cat demo5.py 
    a = {'one':1,'two':2,'three':[3,2,1]}
    b = a.copy()
    print(b)
    [root@kube dict]# py demo5.py 
    {'one': 1, 'two': 2, 'three': [3, 2, 1]}
    [root@kube dict]# 
      ,copy()           ,     ,     。      a   ,copy()                  ,    ,              {'one': 1, 'two': 2, 'three': []};             ,           ,    ,b    [1,2,3]         ,    a   。

     
     
    python updateメソッド
    update()メソッドでは、辞書に含まれるキー値ペアを使用して、独自の辞書を更新できます.update()メソッドを実行するとき、更新された辞書に対応するキー値ペアが含まれている場合、元のvalueは上書きされます.更新された辞書に対応するキー値ペアが含まれていない場合、そのキー値ペアが追加されます.
    [root@kube dict]# cat demo6.py 
    a = {'one':1,'two':2}
    a.update({'one':5.5,'three':3.3})
    print(a)
    [root@kube dict]# py demo6.py 
    {'one': 5.5, 'two': 2, 'three': 3.3}
    [root@kube dict]# 

     
    python pop()メソッド
    [root@kube dict]# cat demo7.py 
    a = {'one': 1, 'two': 2, 'three': 3}
    print(a.pop('one'))
    print(a)
    [root@kube dict]# py demo7.py 
    1
    {'two': 2, 'three': 3}
    [root@kube dict]# 

     
    python popitem()メソッド
    popitem()メソッドは、辞書のキー値ペアをランダムにポップアップするために使用されます.ここのランダムは偽物ですlistとpop()メソッドも、ポップアップ辞書の最後のキー値ペアです.しかし、辞書がキー値ペアを格納する順序は不明であるため、popitem()メソッドは常に最下位に格納された最後のキー値ペアをポップアップする.
    [root@kube dict]# cat demo7.py 
    a = {'one': 1, 'two': 2, 'three': 3}
    print(a.popitem())
    print(a)
    print(a.popitem())
    print(a)
    [root@kube dict]# py demo7.py 
    ('three', 3)
    {'one': 1, 'two': 2}
    ('two', 2)
    {'one': 1}
    [root@kube dict]# 

     
    python setdefault()メソッド
    setdefault()メソッドはkeyに基づいて対応するvalueの値を取得するためにも使用されます.しかし、このメソッドには、プログラムが取得するキーが辞書に存在しない場合、このメソッドは、存在しないキーにデフォルトのvalueを設定してから、そのキーに対応するvalueを返す追加の機能があります.すなわち、setdefault()メソッドは、指定したkeyに対応するvalueを常に返すことができる.キー値ペアが存在する場合、キーに対応するvalueが直接返されます.キー値ペアが存在しない場合は、キーにデフォルトのvalueを設定してから、キーに対応するvalueを返します.
     
    [root@kube dict]# cat demo7.py 
    a = {'one': 1, 'two': 2, 'three': 3}
    print(a.setdefault('four'))                 #  four      ,value   None
    print(a)
    print(a.setdefault('five',2.3))              #         ,   
    print(a)
    print(a.setdefault('one',5.5))                #        ,    
    print(a)
    
    
    [root@kube dict]# py demo7.py 
    None
    {'one': 1, 'two': 2, 'three': 3, 'four': None}
    2.3
    {'one': 1, 'two': 2, 'three': 3, 'four': None, 'five': 2.3}
    1
    {'one': 1, 'two': 2, 'three': 3, 'four': None, 'five': 2.3}
    [root@kube dict]# 

     
     
    python辞書を使用した文字列のフォーマット
    文字列をフォーマットする場合、フォーマットする文字列テンプレートに複数の変数が含まれている場合は、文字列テンプレートに少量の変数が含まれている場合に適していますが、文字列テンプレートに大量の変数が含まれている場合は、変数を順番に提供する方法が適切ではありません.この場合、辞書を使用して文字列をフォーマット出力できます.具体的には、文字列テンプレートでkeyで変数を指定し、辞書で文字列テンプレートのkeyに値を設定します.
     
    [root@kube dict]# cat demo8.py 
    #coding:utf-8
    #             
    
    temp = '  :%(name)s,  :%(age)3.0f,  :%(location)s'
    
    msg = {'name': 'JoJ','age':23,'location':'     '}
    print(temp % msg)
    [root@kube dict]# py demo8.py 
      :JoJ,  : 23,  :     
    [root@kube dict]#