我有一套叫做ISET的套装;有很多3个字母的元素,如:USA,BRA,CHN,....
我还有一本名为高度的字典。此字典的键是SET的元素与某个YEAR字符串的组合。例如:USA1991,USA1992,...,BRA1991,......
在给定年份内查找所有国家/地区的最大高度值的最佳方法是什么?
这就是我一直在使用的:
YEAR = getuserselection()
for i in ISET:
z = heights.get(i + YEAR, None)
if z is None: continue
if z > Max: Max = z
有任何改进建议吗?
谢谢。
答案 0 :(得分:1)
建议,实际上未衡量:使用从{到年heights_per_year
映射国家/地区代码到高度的映射dict
。
year = getuserselection()
heights = heights_per_year[int(year)]
max_height = max(a.itervalues())
请注意转换为int
以获得额外的速度(无需比较字符串)。
更好的是,让height_per_year
映射到(国家/地区代码,高度)对的降序排序list
。
max_height = heights[0][1]
答案 1 :(得分:1)
如果height
变化不大,请在创建或更新数据时缓存所需的统计信息。
答案 2 :(得分:1)
您的算法的重新措辞可能是:
YRNormalizer = max(heights.get(z+YEAR, -99999) for z in ISET)
如果可以,你应该让python自己做循环......