如何解决检查数字是否不为None并执行某些操作的Python方法
对我来说似乎很基本,但是我没有找到一个好的解决方案。
假设一个字典像:
round()
由于内置函数None
显然不能四舍五入for index in range(0,len(data['values'])):
result = round(data['values'][index],2)
print(result)
result2 = round(data['other_values'][index],2)
print(result2)
,因此返回错误:
for index in range(0,len(data['values'])):
if data['values'][index]:
result = round(data['values'][index],2)
print(result)
if data['other_values'][index]:
result2 = round(data['other_values'][index],2)
print(result2)
可能的解决方案是这样的
{{1}}
但是还有一种更Python化的方式吗?
解决方法
您可以round(x,2)
来代替round(x or 0,2)
。
也许是这样的:
data = {'values' : [1.3333,None,2.44444],'other_values' : [2.3333,1.2222,None]}
lst = []
for key in data:
lst.extend([round(num,2) for num in data[key] if num])
print(lst)
输出:
[1.33,2.44,2.33,1.22]
希望这对您有所帮助!
,我不太确定您对输出的期望。当您将给定的values
和other_values
作为键,并且只想简单地打印出舍入数字而忽略None
时,也许您可以尝试以下方法:
print([round(i,2) for i in data['values'] if i is not None]) # so you still have 0 if there was any 0 in the data
print([round(i,2) for i in data['other_values'] if i is not None])
,
您可以使用isinstance
属性
就像:如果data['values'][0]
是float的属性,则打印
if isinstance(data['values'][index],float):
完整代码:
if __name__ == '__main__':
data = {'values': [1.3333,'other_values': [2.3333,None]}
for index in range(0,len(data['values'])):
if isinstance(data['values'][index],float):
result = round(data['values'][index],2)
print(result)
if isinstance(data['other_values'][index],float):
result2 = round(data['other_values'][index],2)
print(result2)
输出:
1.33
2.33
1.22
2.44
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。