从列表中找到最高的整数和对应的字符串

时间:2019-04-12 04:42:29

标签: python python-3.x

更多是我在上一个问题中使用的同一Python程序的延续。我有14个清单。 10个列表包含汽车的品牌和型号,其次是每辆汽车的价值,然后是每个品牌/型号的汽车数量。 3个列表包含前十个的附加值;一个严格包含品牌/型号,下一个严格包含每个汽车的整数值,最后一个严格包含每个品牌/型号的数量。第14个列表包含前10个列表作​​为一个主列表。

我正在尝试查找汽车的最高整数值,然后找到该汽车的相应字符串名称,并将两者都打印到屏幕上。我具有最高的整数值,并将其格式化为以货币打印,但是我不知道如何找到与该整数值相对应的汽车名称。

我将为上下文添加示例。

我当前的代码:

def getList(all):
    x = 0
    for x in range(0, len(all)):
        list0.append(all[x][0])
        list1.append(all[x][1])
        list2.append(all[x][2])
    print()
    print("Vehicle Inventory by Type")
    print("Inventory       Make/Model")
    for x in range(0, len(all)):
        print("%9d       %-1s" % (list2[x], list0[x]))
    return all, list0, list1, list2


def getHighest(all, list0, list1):
    print("Highest MRSP:")
    i = max(list1)
    if i == (all[9][1]):
        print("yes")
    print('${:,.2f}'.format(i))


list0 = []
list1 = []
list2 = []

car1 = ["Chevy Bolt EV", 37495, 2]
car2 = ["Kia Niro", 24485, 23]
car3 = ["VW e-Golf", 32790, 12]
car4 = ["Hyundai Kona", 37495, 3]
car5 = ["Honda Insight", 23725, 4]
car6 = ["Chevrolet Volt", 34395, 14]
car7 = ["Hyundai Ioniq", 23285, 5]
car8 = ["Tesla Model 3", 45200, 1]
car9 = ["Audi e-tron", 75795, 2]
car10 = ["Toyota Prius", 24405, 12]

all = (car1, car2, car3, car4, car5, car6, car7, car8, car9, car10)

getList(all)
print()
getHighest(all, list0, list1)

函数“ getHighest”中的“ if”语句是我试图找出逻辑的尝试,但是我知道我做错了,而且我不知道如何获得所需的内容。

忘记添加功能“ getList”的结果:

Vehicle Inventory by Type
Inventory       Make/Model
        2       Chevy Bolt EV
       23       Kia Niro
       12       VW e-Golf
        3       Hyundai Kona
        4       Honda Insight
       14       Chevrolet Volt
        5       Hyundai Ioniq
        1       Tesla Model 3
        2       Audi e-tron
       12       Toyota Prius

作为一个例子,奥迪e-tron在这个特定的系列列表中将具有最高的值,其整数值为75795,所以我想同时获取值和名称并将其显示在屏幕上。

我要寻找的示例:

Highest MSRP:
Audi e-tron at $75,795.00

我目前所举的例子:

Highest MSRP:
$75,795.00

我曾尝试在Google上研究此类问题,但似乎找不到任何相关问题。不知道这是由于我在搜索中没有正确解释它,还是由于我没有在正确的位置查看,我不知道。无论如何,我们将不胜感激,因为我不知道该怎么做。

3 个答案:

答案 0 :(得分:2)

您可以使用名为let posts = Post.allPosts 的Python库,这将使您的任务更加轻松。

您可以尝试以下方法吗?

pandas

如果要获取第一个值,可以执行以下操作:

car1 = ["Chevy Bolt EV", 37495, 2]
car2 = ["Kia Niro", 24485, 23]
car3 = ["VW e-Golf", 32790, 12]
car4 = ["Hyundai Kona", 37495, 3]
car5 = ["Honda Insight", 23725, 4]
car6 = ["Chevrolet Volt", 34395, 14]
car7 = ["Hyundai Ioniq", 23285, 5]
car8 = ["Tesla Model 3", 45200, 1]
car9 = ["Audi e-tron", 75795, 2]
car10 = ["Toyota Prius", 24405, 12]

all_cars = [car1, car2, car3, car4, car5, car6, car7, car8, car9, car10]

import pandas as pd
df = pd.DataFrame(all_cars, columns=['car_name', 'price', 'qty'])
print(df.sort_values(by=['price'], ascending=[False]))

答案 1 :(得分:2)

通过以下一项更改功能def getHighest()

def getHighest(all, list0, list1):
    print("Highest MRSP:")
    i = max(list1)
    c = [j for j, lst in enumerate(all) if i in lst][0]
    car = all[c][0]
    if i == (all[9][1]):
        print("yes")
    print('{} at ${:,.2f}'.format(car,i))

答案 2 :(得分:1)

您可以在此处使用max,使用第二个元素MRSP x[1]进行评估:

all_cars = [car1, car2, car3, car4, car5, car6, car7, car8, car9, car10]
max_car = max(all_cars , key=lambda x:x[1])
print('{} at ${:,.2f}'.format(*max_car))

输出:

Audi e-tron at $75,795.00