比较文件

时间:2016-01-10 01:54:58

标签: python file

每个类别最有利可图的元素

必须读取我的文件,并按用户条目确定日期范围内每个类别的最有利可图的元素。

文件:

日期|分类|名称|价格

05/01/2016|category6|Name8|4200
06/01/2016|category1|Name1|1000
07/01/2016|category2|Name2|1200
07/01/2016|category3|Name1|1000
07/01/2016|category1|Name2|1200
07/01/2016|category3|Name2|1200
07/01/2016|category2|Name1|1000
07/01/2016|category2|Name2|1200
07/01/2016|category2|Name2|1200
08/01/2016|category2|Name1|1000
09/01/2016|category4|Name7|3100

我的文件会更大,这只是一个例子。

开始日期:07/01/2016 结束日期:07/01/2016

对于该范围内的每个日期,程序将为每个类别打印最有利可图的元素

第1类:

07/01/2016|category1|Name2|1200

Name2 = 1200

比较价格>>>最赚钱的是:Name2

第2类:

07/01/2016|category2|Name2|1200
07/01/2016|category2|Name1|1000
07/01/2016|category2|Name2|1200
07/01/2016|category2|Name2|1200

Name1 = 1000 名称2 = 3600

比较价格>>>最有利可图:Name2

第3类:

07/01/2016|category3|Name1|1000
07/01/2016|category3|Name2|1200

名称1:1000 名字2:1200

比较价格>>>最有利可图:Name2

问题是我不知道如何比较分类和名称的这些价格。 日期也将始终按照折扣顺序排列。 我正在使用字典和列表。

INPUT AND OUTPUT:

开始日期:07/01/2016

结束日期:07/01/2016

组别;最赚钱的是:Name2

类别2;最赚钱的是:Name2

类别3;最赚钱的是:Name2

在这种情况下,最有利可图的是每个类别的Name2。

1 个答案:

答案 0 :(得分:1)

以下不完全是您需要的,但应该给您一个公平的想法。我会跟踪日期和类别组合中最赚钱的名称和价值:

date_cat_profit_dict = {}

with open('data.txt') as f:
    for line in f:
        # split and store into variables.
        # You could skip processing line
        # if you are looking for specific date
        date, category, name, profit = line.split('|')
        # Convert to int for comparison
        profit = int(profit)
        # Key for storing into dict
        composite_key = '{0}|{1}'.format(date, category)
        # _ because we don't need the name right now
        _, max_profit = (date_cat_profit_dict.
                         setdefault(composite_key, ('', 0)))
        if max_profit < profit:
            date_cat_profit_dict[composite_key] = (name, profit)

for composite_key, (name, profit) in date_cat_profit_dict.items():
    print('Max for {0} : {1}, {2}'.format(composite_key, name, profit))