【问题标题】:Type Conversion with a Dictionary使用字典进行类型转换
【发布时间】:2020-04-12 23:26:35
【问题描述】:

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

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

我正在尝试将数字分别转换为整数和浮点数。我收到此错误: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])

【问题讨论】:

  • 您报告的问题与您的代码无关。它来自其他地方。真正的问题是你试图修改一个元组,而元组是不可变的。
  • 提示:尝试使用列表而不是元组

标签: python python-3.x dictionary tuples


【解决方案1】:

您可能想尝试这样的事情。使用你的代码我也得到了一个关于分配给元组的错误

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

【讨论】:

    【解决方案2】:

    由于元组是不可变的,您必须通过对元组中的每个项目应用相应的转换函数来重构字典中的每个元组。无需调用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 解决问题的非正统方法。

    【讨论】:

      猜你喜欢
      • 2019-03-28
      • 1970-01-01
      • 2017-08-25
      • 1970-01-01
      • 2015-12-15
      • 2021-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多