web-dev-qa-db-ja.com

Python 3.5辞書のリストを反復処理する

私のコードは

index = 0
for key in dataList[index]:
    print(dataList[index][key])

インデックス= 0のディクショナリキーの値を印刷するために正常に動作するようです。

しかし、私の人生では、dataListの未知の数の辞書を反復処理するforループ内にこのforループを配置する方法を理解できません。

13
C. P. Wagner

rangelenlistのインデックスを反復処理できます。

dataList = [{'a': 1}, {'b': 3}, {'c': 5}]
for index in range(len(dataList)):
    for key in dataList[index]:
        print(dataList[index][key])

または、indexカウンターでwhileループを使用できます。

dataList = [{'a': 1}, {'b': 3}, {'c': 5}]
index = 0
while index < len(dataList):
    for key in dataList[index]:
        print(dataList[index][key])
    index += 1

リスト内の要素を直接反復することもできます。

dataList = [{'a': 1}, {'b': 3}, {'c': 5}]
for dic in dataList:
    for key in dic:
        print(dic[key])

辞書の値を反復するだけで、ルックアップなしでも可能です。

dataList = [{'a': 1}, {'b': 3}, {'c': 5}]
for dic in dataList:
    for val in dic.values():
        print(val)

または、反復をリスト内包表記またはジェネレータ内にラップして、後で展開します。

dataList = [{'a': 1}, {'b': 3}, {'c': 5}]
print(*[val for dic in dataList for val in dic.values()], sep='\n')

可能性は無限大。あなたが好むものは選択の問題です。

16
MSeifert

これは簡単にできます:

for dict_item in dataList:
  for key in dict_item:
    print dict_item[key]

リストを反復処理し、リスト内の各辞書について、キーを反復処理し、その値を出力します。

4
Avihoo Mamka