オプションの値でリストを宣言するよりPythonicな方法があるかどうか知りたいですか?
title = data.get('title')
label = data.get('label') or None
if label:
parent = [title, label]
else:
parent = [title]
前もって感謝します。
オプションの値でリストを宣言するよりPythonicな方法があるかどうか知りたいですか?
title = data.get('title')
label = data.get('label') or None
if label:
parent = [title, label]
else:
parent = [title]
前もって感謝します。
これは Python 2 で動作します。
title = data.get('title')
label = data.get('label')
parent = filter(None, [title, label])
Python 3 ではリストではなく遅延オブジェクトをlist(filter(...))
返すため、Python 3 で使用します。
またはparent = [i for i in parent if i]
、両方のバージョンで機能するリスト内包表記。
各スニペットは偽の値を除外し、実際にデータを含むものだけを残します。
これをすべて 1 行にマージすることもできます。
parent = [data[k] for k in ('title', 'label') if data.get(k)]
または、すべての偽の値ではなく、欠損値のみをスキップする場合:
parent = [data[k] for k in ('title', 'label') if k in data]