AlSub
AlSub

Reputation: 1155

how to properly iterate over a list and a dictionary values?

I am trying to iterate first over a list and then over a dictionary values:

The idea is to print() all posible combinations between list elements and dictionary values.

Here's what I got so far:

countries = ["Mexico", "Brasil", "Argentina"]
job_catalog = {"operations director":["director de operaciones", "director of business operations"]}

for country in countries:
    for job_title in job_catalog:
           report_name=str(job_catalog.values())+'-'+country
           print(report_name)
        

Console output:

dict_values([['director de operaciones', 'director of business operations']])-Mexico
dict_values([['director de operaciones', 'director of business operations']])-Brasil
dict_values([['director de operaciones', 'director of business operations']])-Argentina

Expected output:

#director de operaciones-Mexico
#director de operaciones-Brasil
#director de operaciones-Argentina
#director of business operations-Mexico
#director of business operations- Brasil
#director of business operations-Argentina

What am I missing? Is there any other simpler way to accomplish this task?

Upvotes: 1

Views: 40

Answers (2)

Phoenix
Phoenix

Reputation: 4274

You should iterate over dict values:

countries = ["Mexico", "Brasil", "Argentina"]
job_catalog = {"operations director": ["director de operaciones", "director of business operations"]}

for country in countries:
    for job_titles in job_catalog.values():
        for job_title in job_titles:
            report_name = f"{job_title}={country}"
            print(report_name)

Output:

director de operaciones=Mexico
director de operaciones=Brasil
director de operaciones=Argentina
director of business operations=Mexico
director of business operations=Brasil
director of business operations=Argentina

You can iterate over a dict's values and dict's keys:

d = {"a": "b", "c": "d"}

for key in d.keys():
    print(key)

for value in d.values():
    print(key)

for key, value in d.items():
    print(key, value)

Upvotes: 1

Andrej Kesely
Andrej Kesely

Reputation: 195418

You can use itertools.product:

from itertools import product


countries = ["Mexico", "Brasil", "Argentina"]
job_catalog = {
    "operations director": [
        "director de operaciones",
        "director of business operations",
    ]
}

for a, b in product(job_catalog["operations director"], countries):
    print("#{}-{}".format(a, b))

Prints:

#director de operaciones-Mexico
#director de operaciones-Brasil
#director de operaciones-Argentina
#director of business operations-Mexico
#director of business operations-Brasil
#director of business operations-Argentina

Upvotes: 1

Related Questions