辭書
前回の研究により、リストとタプルを使用して順序付きセットを表現(xiàn)できることがわかりました。前の例では、リストを使用してユーザーのニックネームを保存しました
user=['liangdianshui','twowater','兩點(diǎn)水']
ユーザーのニックネームも保存する必要がある場(chǎng)合口座番號(hào)を記録しますか?
リストを使用すると、次のように解決できます:
user=[['liangdianshui','111111'],['twowater','222222'],['兩點(diǎn)水','333333']]
しかし、この方法で表現(xiàn)するのは不便であり、ニックネームに基づいて対応するニックネームを見(jiàn)つけるのは難しく、時(shí)間が長(zhǎng)くなるほど、リストを作成するほど時(shí)間がかかりますが、この時(shí)は dict (辭書) で表現(xiàn)できます Python には辭書 (dict) が組み込まれています dict の正式名は Dictionary で、JAVA のマップに相當(dāng)します。キーと値 (キーと値) ストレージを使用し、検索速度が非常に高速です。
user={'liangdianshui':'111111' ,'twowater':'222222' ,'兩點(diǎn)水':'333333'}
1. dict (辭書) の作成
Dictionary も変數(shù)コンテナ モデルであり、あらゆる種類のオブジェクトを格納できます。
ディクショナリ內(nèi)の各キーと値 (key=>value) ペアはコロン (:) で區(qū)切られ、各ペアはコンマ (,) で區(qū)切られ、ディクショナリ全體が中括弧で囲まれます。 ({}) の形式は次のとおりです。
dict = {key1 : value1, key2 : value2 }
注: キーは一意である必要がありますが、値は一意である必要はありません。値は任意のデータ型にすることができますが、キーは不変である必要があります。
dict (辭書) インスタンスの作成:
dict1={'liangdianshui':'111111' ,'twowater':'222222' ,'兩點(diǎn)水':'333333'} dict2={'abc':1234,1234:'abc'}
2. dict (辭書) にアクセス
#-*-coding:utf-8-*- dict1={'liangdianshui':'111111' ,'twowater':'222222' ,'兩點(diǎn)水':'333333'} print(dict1)
出力結(jié)果:
{'liangdianshui': '111111', 'twowater': '222222', '兩點(diǎn)水': '333333'}
ここで注意すべき點(diǎn)は、このキーが辭書に存在しない場(chǎng)合、エラーが報(bào)告されるということです。
3. dict (辭書) の変更
新しいコンテンツを辭書に追加する方法は、新しいキー/値のペアを追加するか、既存のキー/値を変更または削除することです。ペア
#-*-coding:utf-8-*- dict1={'liangdianshui':'111111' ,'twowater':'222222' ,'兩點(diǎn)水':'333333'} print(dict1) # 新增一個(gè)鍵值對(duì) dict1['jack']='444444' print(dict1) # 修改鍵值對(duì) dict1['liangdianshui']='555555' print(dict1)
出力結(jié)果:
{'liangdianshui': '111111', 'twowater': '222222', '兩點(diǎn)水': '333333'} {'liangdianshui': '111111', 'twowater': '222222', '兩點(diǎn)水': '333333', 'jack': '444444'} {'liangdianshui': '555555', 'twowater': '222222', '兩點(diǎn)水': '333333', 'jack': '444444'}
4. dict (dictionary) の削除
del を使用して、dict (dictionary) 內(nèi)の要素を削除できます。 dict (dictionary) も削除できます。
clear() メソッドを呼び出すことで、辭書內(nèi)のすべての要素をクリアできます。
#-*-coding:utf-8-*- dict1={'liangdianshui':'111111' ,'twowater':'222222' ,'兩點(diǎn)水':'333333'} print(dict1) # 通過(guò) key 值,刪除對(duì)應(yīng)的元素 del dict1['twowater'] print(dict1) # 刪除字典中的所有元素 dict1.clear() print(dict1) # 刪除字典 del dict1
出力結(jié)果:
{'liangdianshui': '111111', 'twowater': '222222', '兩點(diǎn)水': '333333'} {'liangdianshui': '111111', '兩點(diǎn)水': '333333'} {}
5 , dict(辭書)を使うときの注意點(diǎn)
(1) dict(辭書)ではキーを2回作成することはできませんが、dict(辭書)作成時(shí)に表示された場(chǎng)合は、キー値が 2 回割り當(dāng)てられた場(chǎng)合、最後に割り當(dāng)てられた値が優(yōu)先されます。
例:
#-*-coding:utf-8-*- dict1={'liangdianshui':'111111' ,'twowater':'222222' ,'兩點(diǎn)水':'333333','twowater':'444444'} print(dict1) print(dict1['twowater'])
出力結(jié)果:
{'liangdianshui': '111111', 'twowater': '444444', '兩點(diǎn)水': '333333'} 444444
( 2) dict (辭書) キーは不変である必要がありますが、キーは數(shù)値、文字列、またはタプルとして使用できますが、リストは使用できません。
例:
#-*-coding:utf-8-*- dict1={'liangdianshui':'111111' ,123:'222222' ,(123,'tom'):'333333','twowater':'444444'} print(dict1)
出力結(jié)果:
{'liangdianshui': '111111', 123: '222222', (123, 'tom'): '333333', 'twowater': '444444'}
(3) dict が內(nèi)部的に格納される順序は、キーが入力される順序とは関係がありません。
list と比較すると、dict は次のようになります。特徴:
検索と挿入の速度は非常に速く、キーが増加しても速度が低下することはありません。
大量のメモリを消費(fèi)し、大量のメモリを浪費(fèi)します。
リストの場(chǎng)合はその逆です。
要素の數(shù)が増えると、検索と挿入にかかる時(shí)間が長(zhǎng)くなります。
##占有スペースもメモリの浪費(fèi)もほとんどありません#6. dict(辭書)の関數(shù)とメソッドメソッドと関數(shù) 説明 cmp(dict1, dict2) 2 つの辭書を比較する 要素 len(dict) 辭書要素?cái)?shù)の計(jì)算 str(dict) 辭書の印刷可能な文字列表現(xiàn)を出力します。 type(variable) 入力変數(shù)の型を返します。変數(shù)が辭書の場(chǎng)合は、辭書の型を返します dict.clear() 辭書內(nèi)のすべての要素を削除します dict.copy() Return辭書 Copy dict.values() 辭書內(nèi)のすべての値をリストとして返す popitem () 辭書內(nèi)のキーと値のペアをランダムに返して削除します dict.items() 走査可能なものを返します( key、value) リストとしての要素 グループ配列