-
翻过高山走不出你
from collections import OrderedDictproducts = ['Apple', 'Apple', 'Apple', 'Orange', 'Banana', 'Banana', 'Peach', 'Pineapple', 'Pineapple']prices = ['1.00', '2.00', '1.50', '3.00', '0.50', '1.50', '2.00', '1.00', '1.00']min_prices = OrderedDict()for prod, price in zip(products, prices): min_prices[prod] = min(float(price), min_prices.get(prod, float('inf')))>>> print min_prices.keys(), min_prices.values()['Apple', 'Orange', 'Banana', 'Peach', 'Pineapple'] [1.0, 3.0, 0.5, 2.0, 1.0]
-
函数式编程
那这个呢:prices = map(float,prices)r={}for k,v in zip(products,prices): if v < r.setdefault(k,float('inf')): r[k] = vproducts,prices = r.keys(),map(str,r.values())
-
翻翻过去那场雪
可能最简单的方法是利用字典对唯一键的强制执行:from operator import itemgetterProducts = ['Apple', 'Apple', 'Apple', 'Orange', 'Banana', 'Banana', 'Peach', 'Pineapple', 'Pineapple']Prices = ['1.00', '2.00', '1.50', '3.00', '0.50', '1.50', '2.00', '1.00', '1.00']final = dict(sorted(zip(Products, Prices), key=itemgetter(1), reverse=True))