Python2.7の辞書型の要素を取得する方法
辞書についてよくわかってないのでメモ代わりです。
2.7なのは、私がPythonを利用するメイン環境がMotionBuilderだからです。
in
key in dictionary
dictionary = {"key1":"value1","key2":"value2","key3":"value3"}
print("key1" in dictionary)
# True
指定のkeyの項目が存在するかどうかがboolで返ります。
key in dictionary.values()
dictionary = {"key1":"value1","key2":"value2","key3":"value3"}
print ("key1" in dictionary.values())
print ("value1" in dictionary.values())
# False
# True
こちらは指定のValueが存在するかどうかがboolで返ります。
スライスとget()による取得
スライスとは[]での取得の事
dictionary[key]
dictionary = {"key1":"value1","key2":"value2","key3":"value3"}
print (dictionary["key1"])
# value1
dictionary.get(key)
dictionary = {"key1":"value1","key2":"value2","key3":"value3"}
print (dictionary.get("key1"))
# value1
どちらもvalueが取得できることには差がないが、対象がなかった時のふるまいが異なる。
スライスの場合はエラー、get()の場合はNoneが返ってくる
print (dictionary.get("key4"))
# None
指定のkeyが存在しない場合の戻り値をあらかじめ準備も可能
print (dictionary.get("key4","no value"))
# no value
keys()
dictionary = {"key1":"value1","key2":"value2","key3":"value3"}
print(dictionary.keys())
# ['key3', 'key2', 'key1']
値はリストで取得される。なんで末尾から取得されるのか少し調べてみたがわからない。
知ってる人がいたら教えてほしい。
value()
dictionary = {"key1":"value1","key2":"value2","key3":"value3"}
print(dictionary.values())
# ['value3', 'value2', 'value1']
こちらも値はリストで取得される
items()
dictionary = {"key1":"value1","key2":"value2","key3":"value3"}
print(dictionary.items())
[('key3', 'value3'), ('key2', 'value2'), ('key1', 'value1')]
keyとvalueを同時に取得できる。リスト内の各要素はタプルになります。
iteritems()
dictionary = {"key1":"value1","key2":"value2","key3":"value3"}
for k, v in dictionary.iteritems():
print k,v
# key3 value3
# key2 value2
# key1 value1
こちらもkeyとvalueを同時に取得できる。
for文で回す場合はこちらを利用するようだ。
python3系のitems()はデフォルトでこちらを返すようです。
まとめ
辞書型は苦手だったが、こうしてまとめてみたことで自分自身でも少し整理できた気がする。
値が末尾から取得される件を改めて調べたい。
参考にしたページ
https://qiita.com/jinshi/items/9f0f7ae716bce77a1b8a
https://www.headboost.jp/python-dict-keys-tips/