【发布时间】:2021-01-25 09:56:28
【问题描述】:
一个列表和一个字典,如下,我想做一些查询。
列表中的每个元素都是人名和查询日期(字符串格式)
字典有人名key,value是一个以announcement_date(字符串格式)为key,bonus为value的字典。
从给定人员姓名和查询日期的列表中,我想找出人员的奖金,即公告日期最接近(并且早于)查询日期的时间。
例如,“Mike 20191022”将返回 Mike 在 20190630 宣布的奖金(即 105794.62)。
我尝试的是找出每个announcement_date的差异,并将它们与query_date进行比较。从最小的差异,我得到一个索引,并使用该索引返回对应的奖金。
import numpy as np
to_do = ["Mike 20191022"]
bonus = {'Mike': {'20200630': '105794.62', '20191231': '105794.62', '20190630': '105794.62', '20181231': '105794.62', '20180630': '95122.25', '20171231': '95122.25', '20170630': '95122.25'}}
for ox in to_do:
to_do_people = ox.split(' ')[0]"
to_do_date = ox.split(' ')[1]"
for key, s_dict in bonus.items():"
if to_do_people == key:"
tem_list = []"
for k, v in (s_dict.items()):"
tem_list.append(int(to_do_date) - int(k))"
idx = np.argmin(tem_list)"
print (ox + '@Bonus@' + list(s_dict.keys())[idx] + '@' + list(s_dict.values())[idx])"
但是它不起作用。输出是:
Mike 20191022@Bonus@20200630@105794.62
出了什么问题,我该如何纠正?谢谢。
【问题讨论】:
标签: python list loops dictionary