如何将包含一个元素(字符串)的列表组成的列表转换为Python中的单独元素而不是字符串?

问题描述 投票:0回答:1

我正在尝试在 python 中执行一项任务,其中输入文件是 txt 文件。该函数旨在从文件中提取公司(1 公司,1 行)及其收入。公司名称和收入以分号(;)分隔。该函数应该返回获得最高收入的公司名称及其收入。

例如: 输入txt文件:

*Company 1;5000;6000;3000;8000
*Company 2;4000;2000;3000;9000;2000
*Company 3;5000;6000;3000;8000;3000;4000;5000
*Company 4;4000;6000;4000;8000

预期输出: 收入最大:公司3 收入是:34000

我尝试过这样的事情:

def comany_with_max_revenue():
  list_of_lists = []
  with open(name_file, 'r') as file:
    for line in file:
      list_of_lists.append(line.strip().split('\t'))
    print(list_of_lists)

    for company in lista_list:
      elements_of_company = company.split(";")
    print(list_of_lists)

输出是一个列表列表,每个列表只有一个元素(带有公司名称及其收入的字符串)我不知道如何将其更改为字符串和浮点数,然后如何找到收入最大的公司.

python list
1个回答
0
投票

无需将数字转换为浮点数,因为它们都是整数。

用分号分隔每一行。第一个标记是公司名称(带有我们将删除的星号前缀)。剩下的token都是需要相加的数字。

构建元组列表(收入、公司),然后您可以对其进行排序以确定收入最高的公司。

像这样:

FILENAME = "foo.txt"

def company_with_max_revenue(filename):
    data = []

    with open(filename) as f:
        for row in f:
            company, *revenues = row.split(";")
            sr = sum(map(int, revenues))
            data.append((sr, company[1:]))

    return sorted(data)[-1]

revenue, company = company_with_max_revenue(FILENAME)

print(f"The biggest revenue: {company} The revenue is {revenue}")

输出:

The biggest revenue: Company 3 The revenue is 34000
© www.soinside.com 2019 - 2024. All rights reserved.