必须读取我的文件,并按用户条目确定日期范围内每个类别的最有利可图的元素。
文件:
日期|分类|名称|价格
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。
答案 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))