はじめに
複数の dict
からkeysをできるだけ簡単に取り出したい.
条件
- 複数の
dict
がある -
list
になっている -
keys
のlist
が欲しい
python
code
dict
の list
リスト x
から ['A', 'B', 'C']
を得たい.
x = [{'A':'abc','B':'bcd'}, {'C':'cdf'}]
for
で書く
とてもシンプル目的は達成できる.
a = []
for i in x:
for j in i:
a.append(j)
print(a)
# ['A', 'B', 'C']
内包表記にする
単純に書く
for
ではdict
のkey
だけが返される.
内包表記ではkey
とvalues
を含めたdict
が返される.
結果,何も変わらない.(失敗)
[j for j in [i for i in x]]
# [{'A': 'abc', 'B': 'bcd'}, {'C': 'cdf'}]
keys()
を使う
内包表記だとdict_keys()
になる.
これは,正しい動作.しかし,目的には合わない.
[j for j in [i.keys() for i in x]]
# [dict_keys(['A', 'B']), dict_keys(['C'])]
list()
を使う
-
list(x)
で dict x から key を取り出せる
for
と同じ解釈なのかと思われる.
[list(i) for i in x]
# [['A', 'B'], ['C']]
sum()
を使って flatten
sum([j for j in [list(i) for i in x]],[])
# ['A', 'B', 'C']
内包表記の for
を削除
-
map
を使う -
lambda
を使う
sum(map(lambda i: list(i), x),[])
# ['A', 'B', 'C']
まとめ
「for
」で構成する方法と「内包表記,map
とlambda
」を使う例を示した.