Search code examples
pythonlistfor-loopdictionarypython-3.5

How to iterate through a list of dictionaries


My code is

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

Seems to work fine for printing the values of dictionary keys for index = 0. However, I can't figure out how to iterate through an unknown number of dictionaries in dataList.


Solution

  • You could just iterate over the indices of the range of the len of your list:

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

    or you could use a while loop with an index counter:

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

    you could even just iterate over the elements in the list directly:

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

    It could be even without any lookups by just iterating over the values of the dictionaries:

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

    Or wrap the iterations inside a list-comprehension or a generator and unpack them later:

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

    the possibilities are endless. It's a matter of choice what you prefer.