Search code examples
pythonarraysjsonfor-loopnested-loops

values are not shown up when using the second for loop - Python


I'm was trying to do random selection in the data, but I was stuck when using for-loop to nest all data into an array.

Data

data = [
    {"Animal1": "Dog", "Animal2": "Cat", "Animal3": "Snake"},
    {"Animal1": "Mouse", "Animal2": "Ant", "Animal3": "Chicken"},
    {"Animal1": "Fish", "Animal2": "Elephant", "Animal3": "Fox"},
    {"Animal1": "rabbit", "Animal2": "sheep", "Animal3": "wolf"}
]

My code:

new_data = []

for rows in data:
    for row in rows:
        new_data.append(row)

print(new_data)

Output

['Animal1', 'Animal2', 'Animal3', 'Animal1', 'Animal2', 'Animal3', 'Animal1', 'Animal2', 'Animal3', 'Animal1', 'Animal2', 'Animal3']

Expected output

{
    "Animal1": "Dog", "Animal2": "Cat", "Animal3": "Snake",
    "Animal1": "Mouse", "Animal2": "Ant", "Animal3": "Chicken",
    "Animal1": "Fish", "Animal2": "Elephant", "Animal3": "Fox",
    "Animal1": "rabbit", "Animal2": "sheep", "Animal3": "wolf"
}

Solution

  • I think you're looking for something like:

    from collections import defaultdict
    
    results = defaultdict(list)
    
    for rows in data:
        for key, value in rows.items():
            results[key].append(value)