第四章辞書と集合(インデックスが通じない場合)
6331 ワード
一、辞書
1.辞書の作成と使用 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 はまた、キーに直接値を付与することもでき、キーが存在する場合、対応する値を書き換える.存在しない場合は、新しいキー割り当てを作成します. 辞書とシーケンスが異なるのは、シーケンスが順序にこだわっているのに対し、辞書がマッピングにこだわっていることであり、順序を話さない 辞書のキーはユニークでなければなりません.値は任意のデータ型を取ることができますが、文字列、数値、メタグループなどの可変でなければなりません. 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は、元の辞書と同じキー値ペアを含む新しい辞書を返します(このメソッドは、値自体がコピーではなくオリジナルであるため、コピーを置き換え、オリジナルは変更されませんが、コピーを変更すると、オリジナルも変更されます).
レプリカを変更した後、オリジナルを変更できない場合は、モジュールcopyの関数deepcopyを使用する必要があります. 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)の形式であるすべての辞書を含むリストを返します.ディクショナリ・アイテムのリスト内の並べ替え順序が不確定です(戻り値がリストであることに注意してください).この戻り値は、ディクショナリ・ビューという特殊なタイプに属します.ディクショナリビューは反復に使用できます.また、その長さとメンバーシップチェックを決定することもできます. keys:メソッドkeysは、指定した辞書のキーを含む辞書ビューを返します.dict.keys()は、辞書のすべてのキー をリストで返す pop:指定キーに関連付けられた値を取得し、そのキー値ペアを辞書から削除するための (「インデックス」とは異なり、値を返すと削除される) popitem法popitemはlistに類似する.popだがlist.popポップアップリストの最後の要素、popitemはランダムに辞書項目をポップアップします.辞書項目の順序が不確定で、最後の要素の説がないため、リストのpop関数も使用できませんが、popitemで各項目を削除することができます. setdefaultメソッドsetdefaultは、指定したキーに関連付けられた値も取得するため、getと同様です.また、setdefaultは、指定したキーが辞書に含まれていない場合に、辞書に指定したキー値ペアを追加します.(すなわち、指定されたキーが存在しない場合、setdefaultは指定された値を返し、それに応じて辞書を更新します.指定されたキーが存在する場合、その値を返し、辞書を保持します.getと同様にデフォルトはNoneですが、変更可能です. 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.コレクション**の作成大かっこ{}ですべての要素を直接囲む set()で作成 空のセットは、{}ではなくset()を使用する必要があります.なぜなら、{}は空の子を作成するために使用されるからです.**2.アクセスセット** 反復を用いて集合中のすべてのデータを読み出す(for...each) inとnot inを使用して、1つの要素がセット内にあるかどうかを判断する . add()メソッドを使用すると、集合に要素を追加できます.remove()/discard()/pop()/clear()を使用して、集合で既知の要素 を削除します.可変集合メタグループのように任意に要素を追加および削除できない場合でも、frozenset()関数 で可変集合を定義することができる.集合動作 &:交差`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
1.辞書の作成と使用
phonebook={'Alice': '2341', 'Beth' : '9102', 'Cecil' : '3258'}
辞書は、アイテム(item)に対称なキーとその対応する値から構成される.上記の例では、キーは名前で、値は番号で、各キーと値の間はコロンで区切られ、項目の間はカンマで区切られ、辞書全体がカッコで区切られています.空の子典(何もない)は、2つのカッコで表されます.すなわち{}です.ディクショナリは、マッピングと呼ばれる名前で各値にアクセスするデータ構造です.辞書の作成方法: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}
注意:2.基本的な辞書操作
辞書の基本的な動作は多くの点でシーケンスに似ている.
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で唯一のマッピングタイプで、辞書はシーケンスではありません.シーケンスが存在しない値に値を割り当てると、エラーが表示されます.辞書には、辞書に追加されます.
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']}
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')])
d={'x':1, 'y':2} d.pop('x') ->1 d ->{'y':2}
d ={} d.setdefault('name', 'N/A')->'N/A' d ->{'name': 'N/A'} d['name']='Gumby' d.setdefault('name', 'N/A')->'Gumby' d->{'name' :'Gumby'}
二、集合
コレクション(set)は辞書のいとことも呼ばれ、辞書と同様に無秩序であるため、インデックスやスライスなどの操作は使用できませんが、重複する要素がない唯一の特徴があります.**1.コレクション**の作成
set1={' ', ' ', ' ', ' '}
set2=set([' ', ' ', ' ', ' ']) set1==set2->True
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}
set1=frozenset({1, 2, 3, 4, 5})
A=set('abcd'), B=set('cdef')