辞書またはオブジェクトのリストがあるとしましょう。これは効果的に次のようになります。
[
{'score': 5, 'tally': 6},
{'score': 1, 'tally': None},
{'score': None, 'tally': None},
]
None ではないすべての「スコア」と「タリー」のリストを作成する Pythonic で簡潔な方法は何でしょうか? したがって、結果は次のようになります。
[5, 6, 1 ]
辞書またはオブジェクトのリストがあるとしましょう。これは効果的に次のようになります。
[
{'score': 5, 'tally': 6},
{'score': 1, 'tally': None},
{'score': None, 'tally': None},
]
None ではないすべての「スコア」と「タリー」のリストを作成する Pythonic で簡潔な方法は何でしょうか? したがって、結果は次のようになります。
[5, 6, 1 ]
リスト内包表記を使用して、この簡潔なソリューションを試してください。
lst = [{'score': 5, 'tally': 6},
{'score': 1, 'tally': None},
{'score': None, 'tally': None}]
[v for m in lst for v in m.values() if v is not None]
=> [6, 5, 1]
list(i for i in
itertools.chain.from_iterable(
itertools.izip_longest(
(d['score'] for d in listOfDicts if d['score'] is not None),
(d['tally'] for d in listOfDicts if d['tally'] is not None)
)) if i is not None)
>>> import itertools
>>> listOfDicts = [
... {'score': 5, 'tally': 6},
... {'score': 1, 'tally': None},
... {'score': None, 'tally': None},
... ]
>>> list(i for i in itertools.chain.from_iterable(itertools.izip_longest((d['sco
re'] for d in listOfDicts if d['score'] is not None), (d['tally'] for d in listO
fDicts if d['tally'] is not None))) if i is not None)
[5, 6, 1]