如何在python的列表中将float转换为int?

我在 python 列表中将 float 转换为 int 时遇到问题。


列表的元素之一如下所示:


{'artForm': 'Madur',

  'artistName': 'Bharati Dolai',

  'gender': 'F',

  'district': 'Paschim Medinipur',

  'phone': '',

  'artisanCard': {'exists': 'N', 'cardNo': ''},

  'dob': '',

  'age': 45.0,

  'year': 1971.0,

  'education': 'I',

  'childrenGoToSchool': 'Y'

}

我无法将ageand转换year为 int。


我的代码:


for i in range(len(d)):

    int(d[i]['age'])

我收到以下错误


ValueError: cannot convert float NaN to integer

期望的输出:


 {'artForm': 'Madur',

      'artistName': 'Bharati Dolai',

      'gender': 'F',

      'district': 'Paschim Medinipur',

      'phone': '',

      'artisanCard': {'exists': 'N', 'cardNo': ''},

      'dob': '',

      'age': 45,                  #converted to int

      'year': 1971,               #converted to int

      'education': 'I',

      'childrenGoToSchool': 'Y'

    }


UYOU
浏览 332回答 3
3回答

开心每一天1111

使用dict comprehension:import math  print({k: int(v) if k == 'age' or k == 'year' and not math.isnan(v) else v for k,v in d.items()})输出:{ 'artForm': 'Madur', 'artistName': 'Bharati Dolai', 'gender': 'F',  'district': 'Paschim Medinipur', 'phone': '',  'artisanCard': {'exists': 'N', 'cardNo': ''},  'dob': '', 'age': 45, 'year': 1971,  'education': 'I', 'childrenGoToSchool': 'Y'}编辑:如果您只想要特定的列:print({k: int(v) for k, v in d.items() if k == 'age' or k == 'year' and not math.isnan(v)})输出:{'age': 45, 'year': 1971}

慕妹3146593

您有一些年龄NaNs在您的列表中。如果这些无法删除,您可以尝试将代码包装在一个try-except语句中:num_of_nans = 0for entry in d:    try:        entry['age'] = int(entry['age'])    except ValueError:        entry['age'] = 'Age not known'        num_of_nans += 1您可能想要计算 NaN 的数量,以便了解丢失了多少条目。

慕田峪7331174

你的一些价值观是NaN. 此外,您错过了分配操作。import mathfor i in range(len(d)):    if not math.isnan(d[i]['age']):        d[i]['age'] = int(d[i]['age'])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python