代码之家  ›  专栏  ›  技术社区  ›  Wiktoria Moczarska

如何转换由包含一个元素(字符串)的列表组成的列表,使其在python中不是字符串而是单独的元素?

  •  -2
  • Wiktoria Moczarska  · 技术社区  · 2 周前

    我正在尝试在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)
    

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

    1 回复  |  直到 2 周前
        1
  •  0
  •   SIGHUP    2 周前

    没有必要将数字转换为浮点,因为它们都是整数。

    在分号上拆分每一行。第一个标记是公司名称(带有星号前缀,我们将删除它)。剩下的代币都是需要加在一起的数字。

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

    这样地:

    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