1

オプションの値でリストを宣言するよりPythonicな方法があるかどうか知りたいですか?

title = data.get('title')
label = data.get('label') or None

if label:
   parent = [title, label]
else:
   parent = [title]

前もって感謝します。

4

2 に答える 2

2

これは 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]、両方のバージョンで機能するリスト内包表記。

各スニペットはの値を除外し、実際にデータを含むものだけを残します。

于 2013-02-16T00:30:58.293 に答える
1

これをすべて 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]
于 2013-02-16T00:42:39.393 に答える