如果输入具有相似的值,我如何 return 得到不止一个结果

How do i return more than one result from this if the input have similar value

例如:在这种情况下,需要最昂贵的物品。

d= (('Shirts',40000),('trousers',40000),('provisions',34000),('others',34000))

def pick_the_most_expensive_from_my_list(d):
    material = '' 
    price = None
    for x,y in d:
        if price is None:
            price= y
            material= x
        while y > price:
            price = y                           
            material= x
        
    return material,price

您可以先找到最高价格,然后找到具有该价格的 return 对。

d= (('Shirts',40000),('trousers',40000),('provisions',34000),('others',34000))

def pick_the_most_expensive_from_my_list(d):
    return [pair for pair in d if pair[1]==max([item[1] for item in d])]

输出

[('Shirts', 40000), ('trousers', 40000)]

您需要先找到最高价格,然后过滤具有最高价格的值。

d= (('Shirts',40000),('trousers',40000),('provisions',34000),('others',34000))

def pick_the_most_expensive_from_my_list(d):
    if not d:
        return None
    max_v = max(d, key=lambda x:x[1])[-1]
    return list(filter(lambda x: x[1]==max_v, d))
    
print(pick_the_most_expensive_from_my_list(d))

输出

[('Shirts', 40000), ('trousers', 40000)]

或使用字典

d= (('Shirts',40000),('trousers',40000),('provisions',34000),('others',34000))

def pick_the_most_expensive_from_my_list(d):
    if not d:
        return None
    price = {}
    
    for i in d:
        if i[1] not in price:
            price[i[1]] = [i]
        else:
            price[i[1]].append(i)
    
    return price.get(max(price))
    
print(list(pick_the_most_expensive_from_my_list(d)))

def mostExpensiveItems():
    items = [''] 
    prices = [0] 
    for currentItems, currentPrices in items:  
        if currentPrices > prices[-1]: 
            items.append(currentItems)
            prices.append(currentPrices)
        elif currentPrices == prices[-1]:
            items.append(currentItems)
            prices.append(currentPrices)
    print(items)
    print(prices)