pythonの辞書とセット

34953 ワード

1.辞書
辞書はシーケンシングシーケンスに属し、要素はシーケンシングされず、ハッシュ方式でデータアクセスされ、辞書は可変コンテナであり、辞書にはキー値ペア:key:valueが1つずつ保存されている.私たちはkeyを通じて対応する値を取得し、私たちの中国語辞書に似ています.辞書の特徴は、辞書のキーが一意でなければならないことであり、可変タイプでなければならないことであり、辞書の検索速度が速いことである.
1.1.辞書の作成
辞書を作成するには
d1 = {}  #      
d2 = {"name":"  ", "age":20, "name":"  "}  #    ,           
d3 = dict()  #      
d4 = dict(a=3, b=4)  #   a b     ,3 4     

1.2.辞書の一般的な操作
1.2.1.検索
辞書を次のように検索できます.
d1 = {"a":10, "b":20, "c":30}
print(d1["a"])  #        
print(d1.get("a"))  #   get()     

運転結果は以下の通りです.
10
10

ここで、キーによる値へのアクセスとget()関数による値へのアクセスの違いは、キーによる値へのアクセスで、キーが存在しない場合、pythonがエラーを報告することです.たとえば、
d1 = {"a":10, "b":20, "c":30}
print(d1["m"])

運転結果は以下の通りです.
	print(d1["m"])
KeyError: 'm'

ただし、get()関数によるアクセス値では、クエリーされたキーが存在しない場合、システムはエラーを報告せず、デフォルトではNoneが返されます.たとえば、
d1 = {"a":10, "b":20, "c":30}
print(d1.get("m"))

運転結果は以下の通りです.
None

1.2.2.追加
辞書に存在しないキーに値を割り当てるのは、追加です.たとえば、
d1 = {"a":10, "b":20, "c":30}
d1["abc"] = 300
print(d1)

運転結果は以下の通りです.
{'a': 10, 'b': 20, 'c': 30, 'abc': 300}

1.2.3.削除
辞書のキー値ペアを以下のように削除することができます.
#   pop()      
d1 = {"a":10, "b":20, "c":30}
d1.pop("a")
print(d1)

#        del    
d1 = {"a":10, "b":20, "c":30}
del d1["b"]
print(d1)

#     
d1 = {"a":10, "b":20, "c":30}
d1.clear()
print(d1)

運転結果は以下の通りです.
{'b': 20, 'c': 30}
{'a': 10, 'c': 30}
{}

1.2.4.結合
辞書をupdate()関数でマージできます.
d1 = {"a": 1, "b": 2}
d2 = {"c": 3, "d": 4}
d1.update(d2)
print(d1)

運転結果は以下の通りです.
{'a': 1, 'b': 2, 'c': 3, 'd': 4}

1.2.5.遍歴する
辞書を巡回するには
#     
d1 = {"a":10, "b":20, "c":30}
for key in d1.keys():
    print(key)
print()

#     
d1 = {"a":10, "b":20, "c":30}
for value in d1.values():
    print(value)
print()

#       
d1 = {"a":10, "b":20, "c":30}
for key in d1.keys():
    print(key, "----", d1[key])
print()

#   items()      
d1 = {"a":10, "b":20, "c":30}
for key, value in d1.items():
    print(key, "----", value)

運転結果は以下の通りです.
a
b
c

10
20
30

a ---- 10
b ---- 20
c ---- 30

a ---- 10
b ---- 20
c ---- 30

1.2.6.キー値の個数とメンバーの判断を取得
辞書の取得キー値の個数(len()とメンバー判断(in)の操作とリストは同じです.
2.集合
pythonのコレクションの特徴は、重複要素が許可されていないことです.重複要素を追加すると、フィルタが移動し、交差、並列の演算が可能になります.集合の本質は、シーケンスを無視し、重複要素を無視するデータ構造である.
2.1.コレクションの作成
次の方法でコレクションを作成できます.
s1 = set()  #      {},    
print(s1)

s2 = {1,2,3,4}
print(s2)

print(set([1, 2, 3]))

print(set((4, 5, 6)))

print(set("hello"))

print(set({"7": 1, "8": 2, "9": 3}))  #         ,         

運転結果は以下の通りです.
set()
{1, 2, 3, 4}
{1, 2, 3}
{4, 5, 6}
{'h', 'o', 'e', 'l'}
{'7', '8', '9'}

2.2.コレクションアクション
2.2.1.ふえる
集合内の要素を次のように追加することができます.
#   add()        
s1 = {1, 2, 3, 4}
s1.add(5)
s1.add((6, 7))  #         ,             
print(s1)

#   update()        
s1 = {1, 2, 3, 4}
s1.update([5, 6, 7])
s1.update({8: 2, 9: 3})  #            
s1.update("hello")
print(s1)

運転結果は以下の通りです.
{1, 2, 3, 4, 5, (6, 7)}
{1, 2, 3, 4, 5, 6, 7, 8, 9, 'o', 'h', 'l', 'e'}

2.2.2.削除
コレクション内の要素を削除するには、次のようにします.
#   remove()        
s1 = {1, 2, 3, 4, 5, 6}
s1.remove(1)
print(s1)
#          ,     

#   pop()        
s1 = {1, 2, 3, 4, 5, 6}
s1.pop()  #           
print(s1)

#   discard()        
s1 = {1, 2, 3, 4, 5, 6}
s1.discard(6)
s1.discard(10)  #        ,    
print(s1)

運転結果は以下の通りです.
{2, 3, 4, 5, 6}
{2, 3, 4, 5, 6}
{1, 2, 3, 4, 5}

2.2.3.集合の長さとメンバーの判断
セット内の取得キー値対個数(len()とメンバー判定(in)の操作とリストは同じである.
2.2.4.並列、交差、差分
「|」、「&」、「-」によって、集合間の集計、交差、差分の計算を実現できます.
s1 = {1, 2, 3, 4}
s2 = {2, 3, 4, 5}
print(s1 | s2)  #   
print(s1 & s2)  #   
print(s1 - s2)  #   

運転結果は以下の通りです.
{1, 2, 3, 4, 5}
{2, 3, 4}
{1}