必ずしも同じキーを持っていない辞書のリストがあります。私は特定のキーを持つ各辞書に含まれている値の新しいリストを作成しようとしています。特定のキーを持つ各辞書の辞書リストからPythonを作成
など。
dict1 = {'key1': 1, 'key2': 2, 'key4': 4}
dict2 = {'key2': 2, 'key3': 3}
dict3 = {'key1': 1, 'key2': 2, 'key3': 3}
dict_list = [dict1, dict2, dict3]
は今、私は次のようにdict_listからリストを作成しようとしている:「KEY2」以来、うまく機能
key2vals = [dict['key2'] for dict in dict_list]
print(key2vals)
[2, 2, 2]
は、リスト内のすべての辞書に含まれています。しかし、すべての辞書に表示されないキーを試してみると、間違いがあります。例えば。 'key1':
>>> key1vals = [dict['key1'] for dict in dict_list]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <listcomp>
KeyError: 'key1'
私は以下のような何かができない短くて簡単な方法がありますか?
# This does not work
key1vals = [dict['key1'] if 'key1' in dict for dict in dict_list]
これを達成する最もPythonicな方法は何ですか?
ANSWER: のためとあれば文が逆転されている必要がありますの順序:
key1vals = [dict['key1'] for dict in dict_list if 'key1' in dict ]
また、AbrahamBとDJVの提案を、私はせずに、これらの辞書にデフォルト値を追加することができました検索キー:
[dict.get('key1', 0) for dict in dict_list]
元のサンプルの問題でa.get( 'key'、 'defaultValue')形式を使用できますか?私はもっと大きな画像でそれを使う方法にはかなり従っていません。 –
DJVは別のコメントで答えを提供しました:[dict_listのdのためのd.get( 'key1'、0)] –