首页 > 解决方案 > 在 Python 中将字符串解析为整数时出现问题

问题描述

sales我需要使用一个名为输入数据的多行字符串来显示一周内每个销售人员的总销售额。我已经能够成功地返回一个名为 的字典dic,但是销售数字仍然是字符串,并且我无法为每个销售人员将它们总计,因为当我使用这样的int()方法解析它们时int(i.split(";")[-1]),它会引发错误。

另外作为旁注,有谁知道为什么我不能从输入中得到星期几(i.split(";")[1])?谢谢!

电流输出:

{'': '', 'Lauren': '91', 'Tim': '83'}

期望的输出

{'Lauren': 10, 'Tim': 11}

我当前的代码:

sales = '''
Lauren;Tuesday;9
Tim;Wednesday;8
Tim;Thursday;3
Lauren;Friday;1
'''

def salesCalc(sales):
    dic = {}
    for i in sales.splitlines():
        if i.split(";")[0] in dic:
            dic[i.split(";")[0]] += i.split(";")[-1]   
        else:
            dic[i.split(";")[0]] = i.split(";")[-1]
    return dic

print(salesCalc(sales))

标签: pythonpython-3.x

解决方案


您当前的脚本有两个问题。首先,样本sales输入应该从第一行的数据开始。您以空行开头的版本导致您的循环将空字符串作为第一个键/值。其次,您需要用 , 包装RHS字典以int()使用实际数字。正如您之前所做的那样,您正在执行字符串连接。把这两个放在一起:

sales = '''Lauren;Tuesday;9
Tim;Wednesday;8
Tim;Thursday;3
Laurent;Friday;1
'''

def salesCalc(sales):
    dic = {}
    for i in sales.splitlines():
        if i.split(";")[0] in dic:
            dic[i.split(";")[0]] += int(i.split(";")[-1])
        else:
            dic[i.split(";")[0]] = int(i.split(";")[-1])
    return dic

print(salesCalc(sales))  # {'Tim': 11, 'Lauren': 9, 'Laurent': 1}

推荐阅读