matplotlibでフォント指定
システムからmplのfontsディレクトリにフォントを移してから指定する。Condaとかじゃなくてシステムに直接入ってれば不要かもしれない。
$ cp /usr/share/fonts/TTF/times* <CONDA BASE PREFIX>/envs/<ENV NAME>/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf/
$ rm -r ~/.cache/matplotlib (
plt.rcParams['font.family'] = 'Times New Roman'
dictのデフォルト値指定
「値がなければセットする」を複数のキーでやりたい。update()
の非破壊バージョンである。
cf. https://stackoverflow.com/questions/42315072/python-update-a-key-in-dict-if-it-doesnt-exist
d = {'a': 1, 'b':2}
defaults = { 'b': -2, 'c': -3 }
から
{'a': 1, 'b': 2, 'c': -3}
を得たい。
pythonっぽい書き方
new_d = {**defaults, **d}
dictの内包表記を使った表現。
新しい別の書き方(python>=3.10)
d = {'a': 1, 'b':2, 'c': 3}
new_d = { 'b': -2, 'c': -3 } | d
筋悪な方法1: setdefault()
setdefault(key, value)
でループ
for k, v in defaults.items():
d.setdefault(k, v)
筋悪な方法2: update()
new_d = defaults.copy()
new_d.update()
defaults.copy()
で直接書き換えてもいいが、かなりお行儀が悪い。