我正在使用一行代码来遍历元组列表,并使其中的值成为整数。但是,当我到达一个NoneType元素时,出现以下错误。
TypeError:int()参数必须是字符串或数字,而不是'NoneType'
我希望能够遍历元组列表并处理NoneTypes。由于需要将NoneType提交为我的数据库,因此NoneType必须保留为None。
我认为我可能需要做一些“尝试并除外”代码,但是我不确定从哪里开始。
我使用的代码如下:
big_tuple = [('17', u'15', u'9', u'1'), ('17', u'14', u'1', u'1'), ('17', u'26', None, None)]
tuple_list = [tuple(int(el) for el in tup) for tup in big_tuple]
没有最后一个元组,我将得到以下返回:
[(17, 15, 9, 1), (17, 14, 1, 1)]
我理想中希望返回的是:
[(17, 15, 9, 1), (17, 14, 1, 1), (17, 14, None, None)]
任何想法或建议都会很有帮助。
最佳答案
这应该工作:
tuple_list = [
tuple(int(el) if el is not None else None for el in tup)
for tup in big_tuple
]
我的意思是检查该元素是否为None,然后仅将其转换为
int
,否则放入None
。或者,您可以创建一个单独的函数来转换元素以使其更具可读性和可测试性:
def to_int(el):
return int(el) if el is not None else None
tuple_list = [tuple(map(to_int, tup)) for tup in big_tuple]
关于python - 使用整数时,工作超过“NoneType”类型错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36931078/