Pythonでの辞書の詳細な使用法

# 辞書
# 辞書は、Pythonに組み込まれている唯一のマッピングタイプです。辞書には特別な順序はありませんが、すべて特定のキーに保存されます(key)以下では、キーは数字、文字列、またはタプルにすることができます

# 1.辞書の使用
# 場合によっては、辞書がリストよりも適しています:
#1、 ゲームボードの状態を表します。各キーは座標値で構成されるタプルです。
#2、 ファイルの変更時刻を保存し、ファイル名をキーとして使用します;
#3、 デジタル電話\住所録

#1、 リストを使用して電話帳を作成します,(ここでは電話番号は文字列で表され、0で始まる番号は8進数にコンパイルされます)
name=["A","B","C","D"]
phone=["2341","9102","3158","0142","5551"]print(phone[name.index("B")])
# これは問題ありませんが、実用的ではありません

# 次に、辞書を作成して使用します
# 辞書を作成する,辞書は、複数のキーとそれに対応する値で構成されています。-値のペアはコロンで区切られ、項目はコンマで区切られ、辞書は中括弧で囲まれます。空の辞書{}組成
# 辞書のキーは一意ですが、値は一意ではありません
phonebook={"Alice":"2431",'Beth':'9102','Cecil':'3258'}

#1、 dict関数、他のマッピングを介してdict関数を使用できます(他の辞書など)または(キー、値)シーケンスのペアの辞書
items=[('name','Gumby'),('age',42)]
d=dict(items)print(d)print(d['name'])

# dict関数は、キーワード引数を使用して辞書を作成することもできます
a=dict(name="CY",num=42)print(a['name'])

#2、 基本的な辞書操作
# ほとんどの操作はシーケンスに似ています

# ディクショナリ内のキーと値のペアの数を返します
print(len(a))
# 通常のインデックス
a=dict(name="CY",num=42)print(a["name"])

# 辞書のキーに値を割り当てます
a["name"]="Challenger"print(a)

# デル削除キー
del a["name"]print(a)

# キーが辞書に存在するかどうかを検出するために使用します
print("num"in  a)

# リストとの違い
# キータイプ:字典的キータイプ不一定为整形数据,键可以是任意不可变类型,比如浮点类型(リアルタイプ)、文字列またはメタレント
# 自動的に追加:キーが最初に辞書に存在していなくても、それに値を割り当てることができ、辞書は新しいアイテムを作成します。そして(appendメソッドまたは他の同様の操作を使用せずに)リストの範囲外のインデックスに値を関連付けることはできません
# 辞書の式キーは、値ではなくキーを検索します。リスト内の式の値は、インデックスではなく、値を見つけるために使用されます。
# ディクショナリのチェックキーのメンバーシップは、リストのチェック値のメンバーシップよりも高くなります。データ構造が大きいほど、2つの間の効率のギャップが明確になります。
# 辞書の例
# シンプルなデータベース
# 辞書は人の名前を鍵として使用します。各人は、キーを持つ別の辞書によって表されます'phone'と'addr'分别表示他们的电话号码と地址
people={'Alice':{'phone':'2341','addr':'Fpp driver 23'},'Beth':{'phone':'9102','addr':'Bar street 42'},'Cecil':{'phone':"3158",'addr':'Baz avenue 90'}}

# 電話番号の住所に使用されている説明ラベルは、印刷物に使用されます
lable={'phone':'phone number','addr':'address'}

name=input('Name: ')
# 電話番号または住所を探す?
request=input('Phone number(p) or address(a)?')
# 正しいキー値を使用してください
if request=='p':
 key='phone'if request=='a':
 key='addr'
# 名前が辞書で有効なキー値である場合にのみ情報を出力します
if name in people:print("%s's %s is %s."%(name,lable[key],people[name][key]))
#4 辞書方式
#1、 明確な方法
# clearメソッドは、辞書内のすべてのアイテムをクリアします。これは、次のようなin-situ操作です。(list.sort)したがって、戻り値はありません(またはNoneを返します)
d={}
d['name']='CY'
d['age']=23print(d)
returned_value=d.clear()print(d)print(returned_value)
# clearを使用する意味は、元の辞書を実際に空にすることです。
# 状況1,xを空の辞書に関連付けると、xをクリアできますが、yには影響しません。また、yは元の辞書にも関連付けられます。
x={}
y=x
x['key']='value'print(y)
x={}print(x)print(y)
# 状況2,clearメソッドを使用して、元の辞書をクリアします
x1={}
y1=x1
x1["key"]="value"print(y1)
x1.clear()print(x1)print(y1)
#2、 copyメソッドは、同じキーと値のペアを持つ新しい辞書を返します(値自体は同じであり、コピーではないため、このメソッドは浅いコピーを実装します),値が影響を受けない場合、変更された場合、copyを使用してコピーされた辞書(追加、削除)値、元の辞書も変更されます

x={'username':'admin','machines':['foo','bar','baz']}
y=x.copy()
y['username']='mlh'
y['machines'].remove('bar')print(y)print(x)

# 上記の問題を回避するには、ディープコピー機能を使用できます
from copy import deepcopy
d={}
d['name']=['Alfred','Bertrand']
c=d.copy()
dc=deepcopy(d)
d['name'].append('Clive')print(c)print(dc)

#3、 fromkeysメソッドは、指定されたキーを使用して新しい辞書を作成します。各キーはNoneに対応します。
print({}.fromkeys(['name','age']))
# 上記の方法は空の辞書を使用します。別の辞書を作成するのは少し冗長です。dictメソッドを直接使用できます。
print(dict.fromkeys(['name','age']))
# デフォルト値を指定することもできます
print(dict.fromkeys(['name','age'],'(unknown)'))

#4、 getメソッドは、辞書にアクセスするための非常に緩い方法です。getを使用しない場合、辞書に存在しないアイテムにアクセスするときにエラーが発生します。,何も返しません
d={}print(d.get('name'))
# カスタマイズも可能"デフォルト"print(d.get('name',"N/A"))
# キーが存在する場合、getは通常の辞書クエリと同じ方法で使用されます
d['name']='CY'print(d.get('name'))
# getメソッドを使用して電話帳の機能を実現します
people={'Alice':{'phone':'2341','addr':'Fpp driver 23'},'Beth':{'phone':'9102','addr':'Bar street 42'},'Cecil':{'phone':"3158",'addr':'Baz avenue 90'}}

lable={'phone':'phone number','addr':'address'}

name=input('Name: ')

request=input('Phone number(p) or address(a)?')if request=='p':
 key='phone'if request=='a':
 key='addr'

person=people.get(name,{})
lable=lable.get(key,key)
result=person.get(key,'not available')print("%s's %s is %s."%(name,lable,result))
#5、 items
# itemメソッドは、辞書内のすべてのアイテムをリストに返します。返すときの特定の順序はありません。
# 3. x内部、iteritems()そしてviewitems()両方の方法が廃止され、アイテム()結果はと2.x内部viewitems()一貫性があります。 3時.xでアイテムを使用する()iteritemsを置き換えます()、forを使用してループスルーできます。
d={'title':'ppp','name':'ccc'}print(d.items())

#6、 keys()辞書のキーをリストとして返します
print(d.keys())

#7、 popメソッドは、特定のキーに対応する値を取得し、このキーと値のペアを辞書から削除するために使用されます。
d1={'aasd':"sadad",'asdasd':"sadsadad"}print(d1.pop('aasd'))print(d1)

#8、 popitem
# popitemメソッドはlistに似ています.pop,後者はリストの最後の要素をポップアップします。ただし、違いは、popitemがランダムなアイテムをポップアップすることです。これは、辞書に最後の要素がないため、このメソッドはアイテムを1つずつ削除して処理するのに適しています。(最初にキーのリストを取得する必要がないため、非常に効率的です)
d2={'a':'b',"c":'d'}print(d2.popitem())print(d2)

#9、 setdefault
# setdefaultは、ある程度取得するのと似ており、特定のキーに関連する値を取得できます。辞書に特定のキーが含まれていない場合、setdefaultは対応するキー値を設定することもできます。,キー値が存在する場合、元のキー値は変更されません
d3={}
d3.setdefault('name','None')print(d3)
d3['name']='CY'print(d3.setdefault('name','None'))

#10、 update
# updateメソッドは、ある辞書を使用して別の辞書を更新できます,キー値が存在する場合は上書きされ、存在しない場合は追加されます。
d={'title':'sasdadadad',"url":"asdasdadsad","change":'asdasdada'}
a={'title':"a"}
d.update(a)print(d)

#11、 values,現在の辞書の値を返すために使用されます
d={}
d[1]=1
d[2]=2print(d.values())
# 辞書形式の文字列
# 各変換指定子の後に、キーを追加できます(括弧で囲まれています)、説明要素が続きます
phonebook={'Beth':'9102','Alice':'1111','tom':'1551'}print("tom's phoneNum is %s"% phonebook["tom"])print("tom's phoneNum is %(tom)s"% phonebook)

# 追加された文字列キーを除いて、変換指定子は以前と同じように機能します。このように辞書を使用する場合、指定されたすべてのキーが辞書にある限り、任意の数の変換指定子を使用できます。
# このタイプの文字列フォーマットは、テンプレートシステムで非常に役立ちます
template="""<html><head><title>%(title)s</title></head><body><h1>%(title)s</h1><p>%(text)s</p></body>"""

data={"title":"My Home Page","text":"Welcome to my home page!"}print(template % data)

Recommended Posts

Pythonでの辞書の詳細な使用法
pythonでのwheelの使用法
pythonでのosパッケージの使用
pythonでのタプルの使用法
Python3クローラーでのAjaxの使用
Python仮想環境venvの使用法の詳細な説明
PythonでのMongoDBの使用
pythonでのリストの意味と使用法
Pythondecimalモジュールの使用法の詳細な説明
Pythonのタプルの添え字
PythonWebページパーサーの使用例の詳細な説明
Pythonの対数法の要約
pythonバックトラッキングテンプレートの詳細な説明
Pythonイールドの使用例の分析
Python開発でのパンダの使用
Pythonプラグインメカニズムの詳細な実装
pythonシーケンスタイプの詳細な説明
Python3辞書
詳細な並べ替えアルゴリズム(Pythonで実装)
CentOS8でのnmcliの詳細な使用
Python開発でのnumpyの使用
python定義クラスの簡単な使用法
pythonmysqlのパラメータ化の説明
pythonでのrbの意味を理解する
pythonでのJWTユーザー認証の実装
PythonIOポート多重化の詳細な説明
Pythonガベージコレクションメカニズムの詳細な分析
python標準ライブラリのglobの分析
pythonにdjangoモジュールをインストールする方法
pythonコマンドの-uパラメーターの詳細な説明
pythonで辞書を並べ替える方法
Python推測アルゴリズムの問題の詳細な説明
pythonでのシェル実行の知識ポイント
pythonの関数
Python3.9の7つの機能
pythonでのadbの機能は何ですか
Python super()メソッドの原理の詳細な説明
python標準ライブラリOSモジュールの詳細な説明
Linuxでのいくつかの正規表現の使用
PythonはDoudizhuでカードのシャッフルを実装します
Linuxでのいくつかの正規表現の使用
python辞書の値を変更できますか?
pythonがコンカレントメソッドをサポートする方法の詳細な説明
Linuxでのいくつかの正規表現の使用
ubuntuでpythonをアンインストールした結果、非常に
Pythonに基づくデータタイプの詳細な説明
Pythonで実装された特徴抽出操作の例
Pythonを使用してKSを計算する詳細な例
03.Pythonエントリの演算子
Python3組み込みモジュールの使用法
Python関数パラメータ分類の原理の詳細な説明
Pythonタイマースレッドプールの原理の詳細な説明
Pythonの結合関数
12.Python3でのネットワークプログラミング
pythonでステートメントを印刷する
Pythonインターフェース開発の実装手順の詳細な説明
pythonはどのように辞書のキーを呼び出しますか
UbuntuでのPythonでのGDALのインストールと使用
詳細なPythonループのネスト
Pythonでのパッケージの導入を理解する方法
Python構文の基本