LoginSignup
0
1

More than 1 year has passed since last update.

Python 3 エンジニア認定実践試験勉強記録①

Last updated at Posted at 2023-03-26

python実践認定試験に向けて勉強した内容を共有したいと思います。
受験をする際は是非参考にしてください。

defaultdict-デフォルト値を持った辞書

通常の辞書は存在しないキーを参照するとKeyErrorが発生します。
defaultdictは存在しないキーを参照した時にデフォルト値が返されます。

コード解説

from collections import defaultdict

def value():
    return 'default-value'
d = defaultdict(value, spam=100)
con = d['ham']
print(con) # 存在しないキーを投げるとデフォルト値が返る
con = d['spam']
print(con)

実行後は下記の画像のようになります。
image.png
default_factory引数にintを指定するとデフォルト値が0になります。
同様にlist,dict,setを指定すると空のリスト、辞書、セットがデフォルト値となります。

コード解説

from collections import defaultdict

d_int = defaultdict(int)
con = d_int['ham'] # 存在しない場合は0をデフォルトで返す。
print(con)
d_int['ham'] += 1
con = d_int['ham']
print(con)

d_list = defaultdict(list)
d_list['a']
con = d_list['a']
print(con)

# appendで追加していく。
d_list['a'].append('b')
d_list['a'].append('c')
d_list['a'].append('a')
print(d_list['a'])

image.png

defaultdictの活用方法はデータをまとめる時などに使用します。

コード解説

from collections import defaultdict

detaset = [('野球', '大谷選手'),('サッカー', '久保選手'), ('野球', '村上様'), ('野球', '吉田選手'), ('サッカー', '長友選手')]
data_list = defaultdict(list)
for category, name in detaset:
    data_list[category].append(name)

print(list(data_list.items()))

実行結果
image.png

itemgetter()関数→リストやタプルのソートに使う要素をインデックス値で指定できる。
インデックスを見てタプルを並び替える。

コード解説

from operator import itemgetter
data = [(1, 40, 200), (3, 10, 100), (2, 20, 300), (1, 30, 300)]
print(sorted(data)) # キーを指定しないでソート
print(sorted(data, key=itemgetter(2))) #インデックス2でソートをしてそれ以外は元の順番を保つ
print(sorted(data, key=itemgetter(2, 0))) # 最初はインデックス2でソートし数値が同じ場合はインデックス0でソートする。

実行結果
image.png

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1