endaaman.com

2021-09-07

Tips

Pythonあれこれメモ

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()で直接書き換えてもいいが、かなりお行儀が悪い。


©2024 endaaman.com