I would like to compare multiple nested dictionaries inside a larger dictionary. Suppose we have the following dictionary:
pricesDict = { "supermarket_1": {"apples": 1, "bananas": 2, "melons": 3},
"supermarket_2": {"apples": 1.5, "bananas": 2, "melons": 3},
"supermarket_3": {"apples": 1, "bananas": 2, "melons": 3},
"supermarket_4": {"apples": 1, "bananas": 2.7, "melons": 3}}
I have a pricesDict
that contains the prices of some products (more than 3 as shown above) in different supermarkets (more than 4 as shown above).
I want to go through it to compare the nested supermarkets with one another (e.g supermarket_1
with supermarket_2
, supermarket_3
and supermarket_4
, supermarket_2
with supermarket_3
and supermarket_4
and so on) to find out which one has the lowest prices.
If the programme spots a difference between the price of a specific product in two supermarkets it should print a message to inform us that there is a difference on the prices.
The output should be something like the following:
There is a price difference between supermarket_1: 1 and supermarket_2: 1.5 in apples
There is a price difference between supermarket_1: 2 and supermarket_4: 2.7 in bananas
There is a price difference between supermarket_2: 1.5 and supermarket_3: 1 in apples
There is a price difference between supermarket_2: 1.5 and supermarket_4: 1 in apples
There is a price difference between supermarket_2: 2 and supermarket_4: 2.7 in bananas
There is a price difference between supermarket_3: 2 and supermarket_4: 2.7 in bananas
Thanks!
You can do it with itertools.combinations
and a nested loop:
from itertools import combinations
for first_market, second_market in combinations(pricesDict, 2):
for produce in ["apples", "bananas", "melons"]:
first_price = pricesDict[first_market][produce]
second_price = pricesDict[second_market][produce]
if first_price != second_price:
print(
f"There is a price difference between {first_market}: {first_price} " +
f"and {second_market}: {second_price} in {produce}"
)
this prints:
There is a price difference between supermarket_1: 1 and supermarket_2: 1.5 in apples
There is a price difference between supermarket_1: 2 and supermarket_4: 2.7 in bananas
There is a price difference between supermarket_2: 1.5 and supermarket_3: 1 in apples
There is a price difference between supermarket_2: 1.5 and supermarket_4: 1 in apples
There is a price difference between supermarket_2: 2 and supermarket_4: 2.7 in bananas
There is a price difference between supermarket_3: 2 and supermarket_4: 2.7 in bananas