值错误: 在字典中无法将字符串转换为浮点数

2024-09-26 22:55:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在把一本很长的每周值字典转换成每月值。在

以下是dict的一个小样本:

weeklydic={'2007-10-21': '56', '2007-10-28': '58', '2011-07-10': '56', '2011-07-16': '56'}

我用这个代码来计算同一个月的周值:

^{pr2}$

一般来说,它工作良好,在这个小样本中,它应该会返回

monthlydic={'2007-10': '114', '2011-07': '112'}

但是在一个字典里,显然有一个值我不能转换成float,所以我得到了一个非常恼人的消息:

ValueError: could not convert string to float

我的问题是:

a)有没有方法可以追踪字典中的错误条目,以便更好地了解发生了什么?在

b)有没有一种方法可以将“if语句”转换为“try语句”,使其忽略任何错误?在


Tags: 方法代码消息字典错误语句floatdict
2条回答
weekly_string = weeklydic[key]
try:
    weekly_float = float(weekly_string)
except ValueError as e:
    print('error={error}, key={key}, value="{value}"'.format(
          error=e, key=key, value=weekly_string))
    weekly_float = 0.0

之前只需执行一次,而不是对if: else:的两个分支执行此操作

一些建议。在

首先,使用一个defaultdict来保存密钥的初始检查。其次,使用try转换为float,如果不是float则返回None。在

如果没有遇到任何问题,请将其保存到列表中。在

from collections import defaultdict

def convert_float(x):
    try:
        return float(x)
    except:
        return None

monthlydic = defaultdict(float)
problems = []

for key in weeklydic:  
    k = key[0:7]  
    val = convert_float(weeklydic[key])
    if val is not None:
        monthlydic[k] += val
    else:  
        problems.append((k, weeklydic[key]))

相关问题 更多 >

    热门问题