レッスン15
前書き
コンピュータサイエンスでは、連想配列(連想配列)と呼ばれるデータ構造は、それがマッピング(地図)行っているでしょうがあります。Pythonで、このデータ構造は、辞書(辞書)として定義されます。あなたのデータは、キーと値にする必要がある場合には(キー:入力-map->値:出力)フォーマットするとき、あなたは辞書を必要としています。
新しい辞書を作成します。
我々はFriendFaceと呼ばれる新しいソーシャル・ネットワーキング・サイトを構築するとします。私たちは、ユーザ名、プロファイル、言語、登録の時間と場所を含む各新規ユーザ登録に関連する情報を収集します。そして、そのようなデータは、それに対処する方法をPythonの?
# FriendFace Post
# User_id = 209
# message = "D5 E4 F4 C5 G3"
# language = "English"
# datetime = "20181212"
# location = (44.590533,-104.715566)
# we can use a single object to store all of this date
post = {"user_id":209, "message":"D5 E4 F4 C5 G3", "language":"English", "datetime":"20181212", "location":(44.590533,-104.715566)} # format:{"key":"value"...}
私たちは今、キー5が含まれているの(マッピング)の辞書を作成します。あなたがマップとしてそれを扱う場合には、5つの入力(キー)、5つの出力(出力)に対応します。キーとデータ型の値は、すべてのデータタプル型等であってもよいことに留意されたいです。
type(post)
# if you use the type function, you will find post belongs to "dict"
dict
これは、我々は、辞書dictの建設を使用するのpython3を使用しているこのセクションに注意を払うことができます。次に、我々は別のFriendFaceを構築するためのdictポストの情報を使用します。
# This time, we use dict.
post2 = dict(message="SS Cotopaxi", language="English")
# We can see this made a dictionary
print(post2)
{'message': 'SS Cotopaxi', 'language': 'English'}
# We add additional pieces of data by using brackets.
post2["user_id"] = 209
post2["datetime"] = "20181213"
print(post2)
{'message': 'SS Cotopaxi', 'language': 'English', 'user_id': 209, 'datetime': '20181213'}
この実験から、我々は2件のウェイの情報が辞書に追加されて見ることができます:最初のアプローチを、鍵は引用符は必要ありません。第二のアプローチは、括弧や引用符の使用が規定されています。
辞書内のデータへのアクセス
# To see the message from the first post, use the key name "message"
print(post["message"])
D5 E4 F4 C5 G3
# Try to get a info. which is not included by post2
print(post2['location'])
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-6-840c4f5feede> in <module>()
----> 1 print(post2['location'])
KeyError: 'location'
私たちは、場所がキーPOST2で定義されていない、でしょう、それは間違って行くでしょう。だから、どのようにこれが起こる避けるために?[ヒント:単一引用符または二重引用符をすることができます。]我々は2つの方法を提供します。
# First, to check if the key is in the dictionary
if "location" in post2:
print(post2['location'])
else:
print("The post does not contain a location value.")
The post does not contain a location value.
# Second, try and retrieve the value, but handle the possibility of a KeyError
try:
print(post2['location'])
except KeyError:
print("The post does not contain a location value.")
The post does not contain a location value.
もう一つの方法は、データ・ディクショナリを取得するために、我々はそれを見つけるために、ヘルプを())(DIRを使用します。
dir(post2)
['__class__',
'__contains__',
'__delattr__',
'__delitem__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__getitem__',
'__gt__',
'__hash__',
'__init__',
'__init_subclass__',
'__iter__',
'__le__',
'__len__',
'__lt__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__setitem__',
'__sizeof__',
'__str__',
'__subclasshook__',
'clear',
'copy',
'fromkeys',
'get',
'items',
'keys',
'pop',
'popitem',
'setdefault',
'update',
'values']
私たちは、それが何をするのか確認するために)(助けを借りて、この方法を「取得」を見つけることができます:
help(post2.get)
Help on built-in function get:
get(...) method of builtins.dict instance
D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.
()辞書にキーと値のペアであるべきでない場合は、デフォルト値を指定することができ、対応するキーの値を取得しようとすることができます。ここでは、POST2の場所に値を追加するには、このメソッドを使用します。
loc = post2.get('location', None)
print(loc)
None
その他の操作
ユーザー情報バックポストの先頭には、一般的なタスクは、辞書内の重要な情報を列挙することです。
print(post)
{'user_id': 209, 'message': 'D5 E4 F4 C5 G3', 'language': 'English', 'datetime': '20181212', 'location': (44.590533, -104.715566)}
# A common way: loop over all the keys
for key in post.keys():
value = post[key]
print(key, "=", value)
user_id = 209
message = D5 E4 F4 C5 G3
language = English
datetime = 20181212
location = (44.590533, -104.715566)
ここでは、(キーを使用)は、辞書内のすべてのキーを取得することができます。この章の注意python2は、印刷方法のpython3より強力異なるためです。
# Another way
for key, value in post.items():
print(key, "=", value)
user_id = 209
message = D5 E4 F4 C5 G3
language = English
datetime = 20181212
location = (44.590533, -104.715566)
項目は、()は、すべてのペアの辞書を得ることができます。もちろん、辞書の操作、多くがあり、POP()、popitem()のような辞書で、キーと値のペアを削除することができ、クリア()を直接辞書を空にすることができます。マルチ関連試してみてください、あなたはより多くを見つけるでしょう。
ユーチューブソース:
https://www.youtube.com/watch?v=bY6m6_IIN94&list=PLi01XoE8jYohWFPpC17Z-wWhPOSuh8Er-