第四章辞書と集合(インデックスが通じない場合)

6331 ワード

一、辞書
1.辞書の作成と使用phonebook={'Alice': '2341', 'Beth' : '9102', 'Cecil' : '3258'}辞書は、アイテム(item)に対称なキーとその対応する値から構成される.上記の例では、キーは名前で、値は番号で、各キーと値の間はコロンで区切られ、項目の間はカンマで区切られ、辞書全体がカッコで区切られています.空の子典(何もない)は、2つのカッコで表されます.すなわち{}です.ディクショナリは、マッピングと呼ばれる名前で各値にアクセスするデータ構造です.辞書の作成方法:
  • a=dict (one=1, two=2, three=3)
  • b= {‘one’:1, ‘two’:2, ‘three’:3}
  • c=dict({‘three’:3, ‘one’:1, ‘two’:2})
  • a ==c ->True
  • はまた、キーに直接値を付与することもでき、キーが存在する場合、対応する値を書き換える.存在しない場合は、新しいキー割り当てを作成します.
  • dict1=dict (F=70, i=105, s=115, h=104, c=67) dict1['x']=88 dict1 ->{'F':70, 'i' :105, 's':115, 'h':104, 'c' :67, 'x':88} dict1['x']=120 dict1 ->{'F':70, 'i' :105, 's':115, 'h':104, 'c' :67, 'x':120}注意:
  • 辞書とシーケンスが異なるのは、シーケンスが順序にこだわっているのに対し、辞書がマッピングにこだわっていることであり、順序を話さない
  • 辞書のキーはユニークでなければなりません.値は任意のデータ型を取ることができますが、文字列、数値、メタグループなどの可変でなければなりません.
  • dict()関数を使用して辞書を作成する場合、dict関数のパラメータは1つのシーケンス(ただし複数はできない)であってもよいので、1つのメタグループシーケンス(リストでもよい)にパッケージ化するが、パラメータは1つしかない.

  • 2.基本的な辞書操作
    辞書の基本的な動作は多くの点でシーケンスに似ている.
  • len(d)は、辞書dに含まれる項目(キー値ペア)の数を返す.
  • d[k]は、キーkに関連付けられた値を返します.インデックスキーに対応する値に相当します.カッコ内に値を入力できません.そうしないと、エラーが発生します.
  • d[k]=v値vをキーkに関連付けます.
  • del d[k]削除キーがkのアイテム.
  • k in d辞書dにキーがkの項目が含まれているかどうかをチェックします.(この検索はキーであり、値ではない)
  • 3.文字列フォーマット機能を辞書に適用する
    format_でmap()は辞書をマッピングすることができ、必要な情報`phonebook={‘Beth’:‘9102’,‘Alice’:‘2341’,‘Cecil’:‘3258’}‘Cecil’s phone number is{Cecil}.format_map(phonebook) ->‘Cecil’s phone number is 3258’
    ディクショナリメソッド
    辞書はPythonで唯一のマッピングタイプで、辞書はシーケンスではありません.シーケンスが存在しない値に値を割り当てると、エラーが表示されます.辞書には、辞書に追加されます.
  • clear:すべての辞書項目を削除します.この操作はその場で実行されます(list.sortと同じです).そのため、何も返さない(またはNoneを返す)フォーマット:d.clear()
  • copy():メソッドcopyは、元の辞書と同じキー値ペアを含む新しい辞書を返します(このメソッドは、値自体がコピーではなくオリジナルであるため、コピーを置き換え、オリジナルは変更されませんが、コピーを変更すると、オリジナルも変更されます).
  • x={'username': 'admin', 'machine': ['foo', 'bar', 'baz']}   
    y=x.copy( )   
    y['username']='mlh'   
    y['machine'].remove('bar')   
    y -> {'username' :'mlh', 'machine': ['foo', 'baz']} 
    x -> {'username' :'admin', 'machine' :['foo', 'baz']}     
    

    レプリカを変更した後、オリジナルを変更できない場合は、モジュールcopyの関数deepcopyを使用する必要があります.
    from copy import deepcopy   
    d={}  
    d['name']=['alfred', 'betrand']  
    c=d.copy  
    dc=deepcopy(d)  
    d['name'].append('clive')  
    c ->{'name': ['alfred',  'betrand', 'clive']}  
    dc ->{'name': ['alfred', 'betrand']}
    
  • fromkeys:メソッドfromkeysは、指定するキーを含む新しい辞書を作成し、デフォルトでは各キーに対応する値はNoneです.もちろん、各キーに対応する値を指定することもできます.dict.fromkeys(['name','age'])->「name':None,'age':None}dict.formkeys(['name','age'],'(unknow)')->「name':'unknown','age':'unknown}(注意引用符は括弧の外)
  • getメソッドgetは、辞書項目へのアクセスにゆとりのある環境を提供します.通常、辞書にないアイテムにアクセスしようとするとエラーが発生し、getを使用して存在しないキーにアクセスすると例外は発生せず、None(デフォルト)が返されます.また、戻り値を人為的に指定することもできます.
  • itemsメソッドitemsは、各要素が(key,value)の形式であるすべての辞書を含むリストを返します.ディクショナリ・アイテムのリスト内の並べ替え順序が不確定です(戻り値がリストであることに注意してください).この戻り値は、ディクショナリ・ビューという特殊なタイプに属します.ディクショナリビューは反復に使用できます.また、その長さとメンバーシップチェックを決定することもできます.d={'title' :'python web site', 'url': 'http://www.python.org', 'spam': 0} d.items() ->dict_items([('url', :'http://www.python.org'), ('spam', 0), ('title', 'python web site')])
  • keys:メソッドkeysは、指定した辞書のキーを含む辞書ビューを返します.dict.keys()は、辞書のすべてのキー
  • をリストで返す
  • pop:指定キーに関連付けられた値を取得し、そのキー値ペアを辞書から削除するためのd={'x':1, 'y':2} d.pop('x') ->1 d ->{'y':2}
  • (「インデックス」とは異なり、値を返すと削除される)
  • popitem法popitemはlistに類似する.popだがlist.popポップアップリストの最後の要素、popitemはランダムに辞書項目をポップアップします.辞書項目の順序が不確定で、最後の要素の説がないため、リストのpop関数も使用できませんが、popitemで各項目を削除することができます.
  • setdefaultメソッドsetdefaultは、指定したキーに関連付けられた値も取得するため、getと同様です.また、setdefaultは、指定したキーが辞書に含まれていない場合に、辞書に指定したキー値ペアを追加します.(すなわち、指定されたキーが存在しない場合、setdefaultは指定された値を返し、それに応じて辞書を更新します.指定されたキーが存在する場合、その値を返し、辞書を保持します.getと同様にデフォルトはNoneですが、変更可能です.d ={} d.setdefault('name', 'N/A')->'N/A' d ->{'name': 'N/A'} d['name']='Gumby' d.setdefault('name', 'N/A')->'Gumby' d->{'name' :'Gumby'}
  • update:メソッドupdateは、ある辞書の項目を使用して別の辞書
  • を更新する.
  • values:メソッドvaluesは、辞書の値からなる辞書ビューを返します(この戻り値はitemsと似ています)`d={}d[1]=1 d[2]=2 d[3]=3 d.value()->dict_value([1, 2 , 3, 4])

  • 二、集合
    コレクション(set)は辞書のいとことも呼ばれ、辞書と同様に無秩序であるため、インデックスやスライスなどの操作は使用できませんが、重複する要素がない唯一の特徴があります.**1.コレクション**の作成
  • 大かっこ{}ですべての要素を直接囲むset1={' ', ' ', ' ', ' '}
  • set()で作成set2=set([' ', ' ', ' ', ' ']) set1==set2->True
  • 空のセットは、{}ではなくset()を使用する必要があります.なぜなら、{}は空の子を作成するために使用されるからです.**2.アクセスセット**
  • 反復を用いて集合中のすべてのデータを読み出す(for...each)
  • inとnot inを使用して、1つの要素がセット内にあるかどうかを判断する
  • .
  • add()メソッドを使用すると、集合に要素を追加できます.remove()/discard()/pop()/clear()を使用して、集合で既知の要素
  • を削除します.
       set1={1,2,3,4,5}
       set1.add(6)
       set1->{1, 2, 3, 4, 5, 6}
       set1.remove(5)
       set1->{1, 2, 3, 4, 6}
       set1.update(7,8,9)
       set1->{1,2,3,4,6,7,8,9}
    
  • 可変集合メタグループのように任意に要素を追加および削除できない場合でも、frozenset()関数set1=frozenset({1, 2, 3, 4, 5})
  • で可変集合を定義することができる.
  • 集合動作A=set('abcd'), B=set('cdef')
  • &:交差`A&B->{‘d’,‘c’}
  • |:統合、統合`A|BまたはA.union(B)->{‘e’,‘f’,‘d’,‘c’,‘b’,‘a’}
  • -:差分セット、相対補完セット、AとBの差分セットは、Aに属し、Bに属さないすべての要素からなる集合`A-B'->「{b',‘a'}」;B-A ->{‘e’,‘f’}
  • ^:対称差は、一方の集合にのみ属し、他方の集合には属さない要素からなる集合A^B->{‘b’,‘a’,‘e’,‘f’}
  • である
  • A=set('abcd') B=set('cdef') C=set('ab') CTrue
  • in or not in