入門
ディクショナリ(辞書)がPythonのデータ構造に組み込まれて、キーと値のペア複数の鍵(キー)と値(値)(、)、コロンで区切られ、各キーにカンマで全体辞書を分離({})を含む、キーが一意である必要があり、そして括弧内の値の任意の型を取ることができるが、キーは、文字列、数値、またはタプルとして不変タイプでなければなりません。
キーと値を関連付けるために使用されるハッシュテーブルの基礎となる、辞書が乱れています。特長は次のとおりです。
●見つけると高速を挿入し、キーが鈍化増加しません。
より多くのメモリを取るために必要●
だから、辞書はすぐに必要なシーンを検索するために使用される時間データ構造のための貿易のスペースです。
操作:一般的な方法
取得する()
戻り値指定されたキーの値、キーは、デフォルト値存在しない場合(デフォルトはNoneです)構文dict.get(キー)、エラーなしで、返されます。
dict_1 [ '年齢'] = 24 [7]:プリント(dict_1.get( '年齢')) 24 の[11]:プリント(dict_1.get( 'NAMA')) なし [12]において:プリント(dict_1 [ 'NAMA']) -------------------------------------------- ------------------------------- KeyError例外トレースバック(最新の呼び出しの最後) <ipython-入力-12-ef61a380920e>で<モジュール> ----> 1枚のプリント(dict_1 [ 'NAMA']) KeyError例外: 'NAMA'
それ以外の場合はFalseを返す、キーはtrueを返しますがあり、辞書に存在するかどうかを判断するためにオペレータに使用し、構文は次のとおりです。辞書でキー。辞書内のキー
dict_1:[15]における OUT [15]:{ '名前':なし、 '年齢' 24、 '性別':なし} [16]中:プリント(dict_1の'名前') 真 で[17]:印刷(dict_1の'NAMA') 偽
項目()関数で実装は、Python 2 has_key()メソッドを使用します。
リターンがリスト形式を横断することができる(キー、値)タプル配列構文がdict.itemsです()。
dict_1:[18]における OUT [18]:{:なし、 '年齢': '名前' 24、 '性別':なし} で[19]:プリント(dict_1.items()) dict_items([( 'name'の、なし)、( '年齢'、24)、( 'セックス'、なし)]) で[20]:キーのため、dict_1.itemsの値(): ...:印刷(キー、値) ... : 名前なし 年齢24 性別なし
辞書すべてのキーのリストを返すために:dict.keys()キー()
dict_1:[21]における OUT [21]:{:なし、 '年齢': '名前' 24、 '性別':なし} [22]中:プリント(dict_1.keys()) dict_keys([ '名前'、 '年齢'、 '性別'])
dict.values():辞書にリスト形式ですべての値を返します)(値を
dict_1:[21]における OUT [21]:{:なし、 '年齢': '名前' 24、 '性別':なし} [22]中:プリント(dict_1.keys()) dict_keys([ '名前'、 '年齢'、 '性別'])
構文は次のとおりです。同じキーがカバーされる場合は、キー値dict_2のdict_1を更新するために使用dict_1.update(dict_2)、。アップデート()
dict_1:[31]における OUT [31]:{:なし、 '年齢': '名前' 24、 '性別':なし、 'sub_nameサブ': 'トニー'} で[32]:dict_2 OUT [32]:{ '名前': 'メアリー'、 '年齢' 18、 '性別':なし、 'sub_nameサブ': ''} [33]において:dict_1.update(dict_2) [34]において:dict_1 OUT [34]:{ '名': 'メリー'、 '年齢':18 'セックス':なし、 'sub_nameサブ': ''}
例えば、辞書に、dict.clearを()すべてのエントリを削除します。クリア()
[1]:dict_1 = dictの(名= "トニー"、年齢= 24) [2]:dict_2 = dict_1 [3]中:プリント(dict_2) { '名前': 'トニー'、 '年齢':24 } [4]:dict_2.clear() [5]:dict_2 OUT [5]:{} [6]:dict_1 OUT [6]:{}
元の辞書の浅いコピー、たとえば辞書戻り、新しいキーと値のペアが同じ、dict.copyを有する():コピー()
dict_1 = dictの(名前= 'トニー'、情報= [ '少年'、24]):[1]で [2]:dict_3 = dict_1.copy() [3]:dict_3 [ '名前'] = "環」 [4]。dict_3 [ '情報']取り外す( '少年') [5]:dict_3 OUT [5]:{ '名称' '環'、 '情報':[24]} で[ 6]:dict_1 OUT [6]:{ '名前': 'トニー'、 '情報':[24]}
新しい辞書を作成し、dict.fromkeys(配列[値] )、 要素配列辞書キーのシーケンスを作成するには、値は、Noneにデフォルトオプションであることを特徴とする請求辞書初期値の値に対応するすべてのキー。データ初期化するのに適した、例えば:(fromkeys)
[1]では:情報= [ '名前'、 '年齢'、 'セックス'] [2]:dict_1 = dict.fromkeys(情報) [3]:dict_1 アウト[3]:{ '名前':なし'時代':なし、 'セックス':なし}
組み合わせ辞書共通の操作
4つの方法があります。
従来の治療
dict_1:[15]における OUT [15]:{ 'トニー':24} [16]において:dict_2 OUT [16]:{ 'ベン':18} [17]において:dict3 = dictの() 内の[18] :dict_1.items()内のキー、値のための ...:dict_3 [キー] =値 ...: で[19]:dict_2.items()内のキー、値は: ...:dict_3 [キー] =値 ...: で[20]:dict_3 OUT [20]:{ 'トニー':24 'ベン':18}
辞書手段の辞書(D1、D2 **)メソッド更新()
dict_1:[33]における OUT [33]:{ 'トニー':24} に[34]:dict_2 OUT [34]:{ 'ベン':18} に[35]:dict_3 =辞書(dict_1、** dict_2 ) で[36]:dict_3 OUT [36]:{ 'トニー':24 'ベン':18}
辞書派生高度
そして、同様のタイプのリストを導出し、基礎となるC実装の利点は、はるかに速く、推奨されるだろう。
辞書のキーを交換します
導出は簡単にキーと値のペアの辞書のための辞書を使用することができます。
IN [42]:dict_4 OUT [42]:{24: 'トニー'、18 'ベン'} で[43]:dict_3 OUT [43]:{ 'トニー':24 'ベン':18} で[ 44]:dict_4 = {K:V Vため、dict_3.itemsにおけるk()} で[45]:dict_4 OUT [45]:{24: 'トニー'、18 'ベン'}
私は、それ自体が別の辞書のサブセットである辞書を作成したいです。辞書からサブセットを抽出
例えば:
IN [88]:= { 'ベン':18、 'ジャック':12、 'リング' 23、 'トニー':24} [89]で:B = {K:でkについてV、V。項目()もしV> 18} で[90]:B OUT [90]:{ 'リング':23 'トニー':24}
辞書によるとPython3.6辞書は順不同ですが、時には我々はorderDictの順序は、ここで整然とした上の辞書辞書に基づいて達成することができ、整然とした辞書を維持するために必要なキーの挿入することを意味する前にそのdictの容量制限を超えているFIFOを達成するために、順番に配置された、最古のは、削除キーを追加しました。注文した辞書を生成します
例えば:
IN [49]:コレクションをインポートからOrderedDict に[50]:ordered_dict = OrderedDict([( ''、2)、( 'B'、4)、( 'C'、5)]) で[51]のためにキー、ordered_dict.itemsの値(): ...:プリント(キー、値) ...: 2 B 4 C 5
原理:内部OrderedDictは、それはまた、OrderedDictの大きさは通常の辞書よりも2倍以上である原因となる重要な要素を、配置するために参加する二重リンクリストを保持しています。私たちは、辞書のようなものを作成するために合わせて挿入することOrderedDictを見ることができます。
キー同じ辞書の組み合わせ一覧
多値必要が一意確保するかどうかに応じて、そのようなリストまたはセットのような他のコンテナに対応する複数の値に格納する、いわゆる多値辞書ニーズを生成するためのキーです。
例えば:
コレクションからdefaultdictをインポート:[64]で 、{、[65]において:= [{ '':1}、{ 'B':3}、{ 'C':4}、{5 ''} 'B':2}、{ 'B':4}] で[66]:B = defaultdict(リスト) で[67]:[B [k]は.append(V)kについての項目、V IN用item.items()] OUT [67]:[なし、無、無、無、無、無] [68]において:B defaultdict(リスト、{ '':[1,5]、OUT [68] 'B':[3、2、4]、 'C':[4]}) で[69]、B [ ''] OUT [69] [1、5]
シーン:同じまたは同一のキー値を含む2つの辞書、違いを見つけます。2つの辞書の類似点と相違点を探し
分析:辞書キーの一連のセットの間のマッピングであり、以下の特徴を有します。
キー()は、辞書内のすべてのキーを返し、辞書は、辞書処理にキーアップクロスセットを使用して操作のキーセットをサポートすることです。
オブジェクトから構成アイテム()戻り値(キー、値)、操作のコレクションをサポートします。
値は()すべての値が一意であるという保証がないため、集合演算をサポートしていませんが、あなたが操作を判断する必要がある場合は、最初に達成するための値のセットに変換することができます。
例えば:
IN [78]:= { '':1、 'B':2 'C':3} [79]でA:B = { 'B':3、 'C':3、 'D': 4} [80]において:a.keys()&b.keys() { 'B'、 'C'} OUT [80] [81]において:a.keys() - b.keys() OUT [ 81]:{ ''} で[82]:a.items()&b.items() OUT [82]:{( 'C'、3)}
あなたは辞書を作成するときに別の例として、あなたは、特定のキーの期待を削除することができます。
[85]における OUT [85]:{ '':1、 'B':2 'C':3} に[86]:C = {K:[キー] kのa.keysで() - { 'B'}} [87]において:C OUT [87]:{ '':3、 'C':3}