web-dev-qa-db-fra.com

Python 3.5 itère à travers une liste de dictionnaires

Mon code est

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

Semble fonctionner correctement pour imprimer les valeurs des clés de dictionnaire pour l'index = 0.

Mais pour la vie de moi, je ne peux pas comprendre comment mettre cela pour une boucle dans une boucle qui itère à travers le nombre inconnu de dictionnaires dans dataList

13
C. P. Wagner

Vous pouvez simplement parcourir les indices du range du len de votre list:

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

ou vous pouvez utiliser une boucle while avec un compteur index:

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

vous pouvez même simplement parcourir les éléments de la liste directement:

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

Cela pourrait être même sans recherche en itérant simplement les valeurs des dictionnaires:

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

Ou encapsulez les itérations dans une liste de compréhension ou un générateur et décompressez-les plus tard:

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

les possibilités sont infinies. C'est une question de choix ce que vous préférez.

16
MSeifert

Vous pouvez facilement le faire:

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

Il itérera sur la liste et pour chaque dictionnaire de la liste, il itérera sur les clés et imprimera ses valeurs.

4
Avihoo Mamka