我正在使用使用字典的数据集。数据集不能保证符合其每个部分。有时我收到重要错误或与密钥没有任何关联。我无法弄清楚的是如何处理这个问题。因为我经常遇到这个问题。它使我防守地在每一行或每一步上进行编程。所以我想知道的是如何处理结构和逻辑?令我困惑的是。我是否应该使用字典默认键,如果没有值,则默认为假真值,这将跟随真值表达式。这看起来非常笨重,并且在每个实例中都要做很多工作?这里是使用我的数据结构的情况的例子。Python - 如何在防御性和逻辑上用不兼容的数据集进行编程 - 字典
坏项目 - 无结束时间关键,没有名称
job = {'name':'', 'starttime':, 'definition': [long list of stuff]}
好项目
job = {'name':'name', 'starttime':5.5, 'endtime':6.5 'definition':
[long list of stuff]}
for job in batch:
job_name = job.get('name', 'Error: No job name found!')
start_time = float(job.get('starttime', 0.0))
if start_time:
current_runtime = time.time() - start_time
end_time = float(job.get('endtime', 0.0))
job_definition = job.get('definition', 'Error: No definition found!')
parse_jobdef = parse_job_definition(job_definition)
job_depends = parse_jobdef.get('depends', 'Error: No depends found!')
average_runtime = get_average_runtime(job_name)
所以,如果没有名字......然后我的程序崩溃。如果不是开始时间,它可能会崩溃。如果这是在迭代中,并不意味着整个程序会崩溃,但只是项目是坏的。我想继续下一次迭代。
这是更具概括性的问题,更少的具体情况。
在处理迭代内的数据结构时如何处理不良数据?所以丢失的键和空值。我是否应该在整个代码中处理捕捉或声明。这是处理它的唯一方法吗?
如果你打算用假值做的是打印“错误:没有任何发现”并退出,那么你不妨完全跳过'get',只是做'my_dict [key]'。这会让你的程序崩溃,当然,但从用户的角度来看,任何一种方法都是一样的。他们看到一条错误消息,并停止工作。 – Kevin 2014-10-29 20:30:10
不,那不好。因为只有那个特定的迭代是不好的......批次的其余部分可能是好的,需要继续。 – user3590149 2014-10-29 20:41:09
您可以使用示例清理数据和您看到的脏数据示例更新问题。强调哪些(是)不应该丢失的重要关键。 – 2014-10-29 20:47:36