使用字典进行类型转换

时间:2020-04-12 23:26:35

标签: python python-3.x dictionary tuples

我在Python中有一个字典,如下所示:

result = {'To Kill a Mockingbird': ('Fiction', '11.99', '89'), 'Killing Lincoln': ('Nonfiction', '15.99', '85'), ... }

我正在尝试将数字分别转换为int和float。我收到此错误:TypeError: 'int' object is not subscriptable(指的是float转换)。

这里可能需要修复一些很小的东西,但是我只是想念它。预先感谢!

for keys in result: 
    result[keys][1] = float(result[keys][1]) 
    result[keys][2] = int(result[keys][2]) 
    print(result[keys])

2 个答案:

答案 0 :(得分:1)

您可能想尝试类似的方法。使用您的代码,我还遇到了有关分配给元组的错误

for keys in result:
    result[keys] = (result[keys][0], float(result[keys][1]), int(result[keys][2]))
    print(result[keys])

答案 1 :(得分:0)

由于元组是不可变的,因此您必须通过对元组中的每个项目应用相应的转换函数来重构字典中的每个元组。无需调用str,但这样做会使解决方案统一且易于扩展。

transformers = str, float, int
for key in result:
    result[key] = tuple(f(val) 
                    for f,val in zip(transformers, result[key]))
#{'To Kill a Mockingbird': ('Fiction', 11.99, 89), 
# 'Killing Lincoln': ('Nonfiction', 15.99, 85)}

注意:这不是最快的解决方案。我给出它仅仅是为了说明一些解决Python问题的非常规方法。