给出两个清单:
类似的东西:
issue_year = [1934, 1932, 1945, 1946, ...]
mature_years = [1967, 1937, 1957, 1998, ...]
通过这个例子,第一个债券的发行年份为1934年,成熟年份为1967年,而第二个债券发行年份为1932年,成熟年份为1937年,依此类推。
我想解决的问题是找到活跃债券数量最多的年份。
这是我到目前为止所拥有的。这可以找到所有债券活跃的年份。
L1=[1936,1934,1937]
L2=[1940,1938,1940]
ctr=0
for i in range(len(L1)):
j=i
L3=list(range(L1[i],L2[j]))
if ctr==0:
tempnew=L3
else:
tempnew=list(set(L3) & set(tempnew))
ctr = ctr+1
这里tempnew
是所有债券的所有活跃年份的交集。但是,可能会发生所有活跃年份的交集可能是空的。例如,如果债券1从1932年到1945年有效,债券2从1947年到1960年有效。
有人可以帮忙吗?
答案 0 :(得分:1)
以下是一些我认为符合您要求的代码。它的工作原理是使用issue
扫描mature
和zip
年份列表。然后填写一个字典,其密钥是所有活跃的年份,其价值是当年活跃的债券数量。最后它倾倒了所有具有最大活跃债券数量的年份:
<强>代码:强>
def add_active_years(years, issue, mature):
for year in range(issue, mature+1):
years[year] = years.get(year, 0) + 1
# go through the lists and calculate the active years
years = {}
for issue, mature in zip(L1, L2):
add_active_years(years, issue, mature)
# now reverse the years dict into a count dict of lists of years
counts = {}
for year, count in years.items():
counts[count] = counts.get(count, []) + [year]
# show the result
print(counts[max(counts.keys())])
示例数据:
L1 = [1936,1934,1937]
L2 = [1940,1938,1940]
<强>结果:强>
[1937, 1938]