【问题标题】:Casting a value in a dictionary from str to float将字典中的值从 str 转换为 float
【发布时间】:2019-07-02 08:50:44
【问题描述】:

我一直在尝试查看其他问题,但没有找到任何适合我的问题。我有一个 if 字典(旅行)列表,并且想要访问旅行列表中每个字典中的值,并将 if 从字符串转换为浮点数。

如果我去旅行[0] 输出是:

# {'pickup_latitude': '40.64499',
#  'pickup_longitude': '-73.78115',
#  'trip_distance': '18.38'}

我正在尝试构建一个遍历字典列表、访问值并将它们传输到浮点数的函数。

我尝试了以下代码的各种版本,包括尝试构建一个新字典并返回它

def float_values(trips):
    for trip in trips:
        for key, value in trip.items():
            value = float(value)
        return

float_values[0] 应该输出:

# {'pickup_latitude': 40.64499,
#  'pickup_longitude': -73.78115,
#  'trip_distance': 18.38}

不断获得

'function'对象不可下标'

'NoneType' 对象不可下标

【问题讨论】:

  • 'function' object is not subscriptable':- 您很可能会使用float_values[0] 而不是float_values()[0]'NoneType' object is not subscriptable - 您的函数返回 None 并且您正在尝试索引 None 对象。
  • 你没有从那个函数返回任何东西
  • 当您使用裸return 时,默认返回对None 的引用。

标签: python list dictionary key


【解决方案1】:

如果你要覆盖字典中的值,你应该这样做

def float_values(trips):

    for trip in trips:
        for key, value in trip.items():
            trip[key] = float(value)

    return trips

通过value = float(value),您正在写入临时浮点值,而不是将其保存在任何地方

【讨论】:

  • new_trips 列表完全没用 - 您正在修改 trip 字典,因此初始列表也将反映这些更新。
【解决方案2】:

您需要做的就是更改字典中的值:

for list_dict in list_of_dicts:
    for key, value in list_dict.items():
        list_dict[key] = float(value)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 2010-11-18
    • 2016-10-04
    • 2018-07-28
    相关资源
    最近更新 更多