我有一个函数一次返回1个列表,如下所示
['7:49', 'Section1', '181', '1578', '634', '4055']
['7:49', 'Section2', '181', '1578', '634', '4055']
这些值是time,section,count,avg,min,max
(我知道这将永远是序列)
我的目的是在任何值超出配置文件中定义的限制时发出警报。
所以我创建了一个如下所示的配置
[Section1]
Count:10
Min:20
Max:100
Avg:50
[Section2]
Count:10
Min:20
Max:100
Avg:50
我检查最大和最小限制的功能
def checklimit(line):
print "Inside CheckLimit", line[1],line[4],line[5]
if line[4] < ConfigSectionMap(line[1])['min'] or line[5] > ConfigSectionMap(line[1])['max']:
sendAlert(line)
这样可以正常工作,但这可以改进并且有一些极端情况。 假设有人将配置保留如下
[Section1]
Count:10
Min:
Max:
Avg:50
[Section2]
Count:10
Avg:50
意味着用户只想检查Count和Avg。如何在我的代码中处理这些情况,以便只检查配置文件中给出的必需参数。我使用了here
中的Config Parser欢迎提出问题标题改进的建议。放一个很难。感谢
答案 0 :(得分:1)
有很多方法可以解决这个问题。通过键查找,您可以使用dict.get()
方法在词典中提供回退值。
所以而不是
ConfigSectionMap(line[1])['min']
你可以使用这样的东西,如果密钥不存在,它将返回0
。
ConfigSectionMap(line[1]).get('min', 0)