如何对比大字典中的嵌套超市商品价格字典,识别价格差异并找出最低价
对比嵌套字典中的超市商品价格
给定一个包含多家超市商品价格的嵌套字典:
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}}
需求
- 对所有超市进行两两对比(如supermarket_1与supermarket_2、3、4对比,supermarket_2与3、4对比,以此类推)
- 检测到商品价格差异时,打印提示信息
- 找出每种商品价格最低的超市
实现代码
# 获取所有超市名称 supermarkets = list(pricesDict.keys()) # 两两对比超市价格 for i in range(len(supermarkets)): market_a = supermarkets[i] prices_a = pricesDict[market_a] for j in range(i + 1, len(supermarkets)): market_b = supermarkets[j] prices_b = pricesDict[market_b] # 遍历所有商品对比价格 for item in prices_a: price_a = prices_a[item] price_b = prices_b[item] if price_a != price_b: print(f"超市{market_a}与超市{market_b}的{item}价格存在差异:{price_a} vs {price_b}") # 统计各商品最低价超市 print("\n--- 各商品最低价信息 ---") # 获取商品列表(默认取第一家超市的商品) items = list(pricesDict[supermarkets[0]].keys()) for item in items: # 收集该商品在所有超市的价格数据 item_price_data = [(market, pricesDict[market][item]) for market in supermarkets] # 计算最低价格 min_price = min(price for _, price in item_price_data) # 筛选出所有卖最低价的超市 lowest_price_markets = [market for market, price in item_price_data if price == min_price] print(f"{item}的最低价为{min_price},售卖该价格的超市:{', '.join(lowest_price_markets)}")
输出示例
超市supermarket_1与超市supermarket_2的apples价格存在差异:1 vs 1.5 超市supermarket_1与超市supermarket_4的bananas价格存在差异:2 vs 2.7 超市supermarket_2与超市supermarket_3的apples价格存在差异:1.5 vs 1 超市supermarket_2与超市supermarket_4的apples价格存在差异:1.5 vs 1 超市supermarket_2与超市supermarket_4的bananas价格存在差异:2 vs 2.7 超市supermarket_3与超市supermarket_4的bananas价格存在差异:2 vs 2.7 --- 各商品最低价信息 --- apples的最低价为1,售卖该价格的超市:supermarket_1, supermarket_3, supermarket_4 bananas的最低价为2,售卖该价格的超市:supermarket_1, supermarket_2, supermarket_3 melons的最低价为3,售卖该价格的超市:supermarket_1, supermarket_2, supermarket_3, supermarket_4
内容的提问来源于stack exchange,提问作者useeeeer132
相关产品推荐
相关产品推荐

