为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

UYOU 2021-12-17 16:20:07
我在 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'    }
查看完整描述

3 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

使用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}


查看完整回答
反对 回复 2021-12-17
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

您有一些年龄NaNs在您的列表中。如果这些无法删除,您可以尝试将代码包装在一个try-except语句中:


num_of_nans = 0


for entry in d:

    try:

        entry['age'] = int(entry['age'])

    except ValueError:

        entry['age'] = 'Age not known'

        num_of_nans += 1

您可能想要计算 NaN 的数量,以便了解丢失了多少条目。


查看完整回答
反对 回复 2021-12-17
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

你的一些价值观是NaN. 此外,您错过了分配操作。


import math

for i in range(len(d)):

    if not math.isnan(d[i]['age']):

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


查看完整回答
反对 回复 2021-12-17
  • 3 回答
  • 0 关注
  • 283 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信