LoginSignup
0
2

More than 3 years have passed since last update.

Python:複数の dict の リストからキーを抽出

Posted at

はじめに

複数の dict からkeysをできるだけ簡単に取り出したい.

条件

  • 複数のdictがある
  • list になっている
  • keyslistが欲しい

python code

dictlist

リスト 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ではdictkeyだけが返される.
内包表記ではkeyvaluesを含めた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」で構成する方法と「内包表記,maplambda」を使う例を示した.


参考

0
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2