我正在制作程序,为日期范围内的文件中的每个类别打印最有利可图的元素。
date_cat_profit_dict = {}
with open("data.txt") as f:
for line in f:
date, category, name, profit = line.split("|")
profit = int(profit)
composite_key = "{0}|{1}".format(date, category)
_, 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("{0} --> {1}".format(composite_key, name))
文件示例:
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
日期将始终处于重新订购状态。
问题:
我必须实现范围o日期的用户条目。该程序将打印所有文件。另外,我对一个类别有两个不同的名称。
此计划的示例。
07/01/2016|category2 --> Name2
09/01/2016|category4 --> Name7
07/01/2016|category3 --> Name2
07/01/2016|category1 --> Name2
08/01/2016|category2 --> Name1
06/01/2016|category1 --> Name1
05/01/2016|category6 --> Name8
我的例外结果:
当程序启动时,它询问我的开始日期和结束日期,之后它将为每个类别打印最有利可图的元素。
输入
开始时间:07/01/2016
结束:2016年8月1日
输出:
类别1:名称2
Category2:Name2
类别3:名称3
答案 0 :(得分:0)
我没有提供详细的代码,而是向您提供缺失的部分。
日期时间比较工具
>>> import time
>>> date_1 = time.strptime('08/01/2016','%d/%m/%Y')
>>> print date_1
time.struct_time(tm_year=2016, tm_mon=1, tm_mday=8, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=8, tm_isdst=-1)
>>> date_2 = time.strptime('09/01/2016','%d/%m/%Y')
>>> print date_2
time.struct_time(tm_year=2016, tm_mon=1, tm_mday=9, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=9, tm_isdst=-1)
>>>
>>> date_1 < date_2
True
使用复合键进行Dict:
您需要拥有dict的绑定密钥,之后您才能将其分开。
选项1: 使用2层dict,即
date_cat_profit_dict[date_str] = dict()
date_cat_profit_dict[date_str][cat_str] = dict()
date_cat_profit_dict[date_str][cat_str]['name'] = name
date_cat_profit_dict[date_str][cat_str]['profit'] = profit
date_cat_profit_dict[date_str][cat_str]['date'] = date_1 #date object
选项2:
date_cat_profit_dict[(date_str, cat_str)] = dict()
date_cat_profit_dict[(date_str, cat_str)]['name'] = name
date_cat_profit_dict[(date_str, cat_str)]['profit'] = profit
date_cat_profit_dict[(date_str, cat_str)]['date'] = date_1 #date object
希望它能帮助您找到解决问题的正确方法。