根据条件在字典推导中替换值


a = ('A','B','C')
b = (45.43453453, 'Bad Val', 76.45645657 )

我想创建一个字典,非常简单:

{ k:v for k,v in zip(a,b) }

我的问题是,现在我想应用浮动(如果可能的话)或替换为None

所以,我想应用一轮2,因此我的输出应该是:

{'A': 45.43, 'B': None, 'C': 76.46}

由于round在任何不实现__round__的情况下都会引发TypeError,因此不可能直接使用字典推导式,但您可以编写自己的函数在其中使用。

def safe_round(val, decimals):
try:
return round(val, decimals)
except TypeError:
return None
a = ('A','B','C')
b = (45.43453453, 'Bad Val', 76.45645657 )
d = { k:safe_round(v, 2) for k,v in zip(a,b) }
{'A': 45.43, 'B': None, 'C': 76.46}

定义如下函数

def try_round(n, d):
try:
return round(n, d)
except TypeError:
return None

result = {k: try_round(v, 2) for k, v in zip(a, b)}

相关内容

  • 没有找到相关文章

最新更新