我有一段代码创建了一个字典Enzyme_dict
,然后用对象(from class Enzyme
)填充该字典。该类对象的属性之一本身就是字典(self._specif
)。组成该属性的字典填充了多个值,都等于1.0/5
。由于机器的精度,该值将以0.20000000000000001
形式打印,这使得打印包含许多这些值的字典变得不可读。
我希望能够编写print Enzyme_dict
并打印所有舍入的浮点值.200
,而不是笨拙的东西0.20000000000000001
。我怎样才能做到这一点?
当我尝试使用来格式化__repr__
类本身中的输出时%.3f
,它告诉我我不能这样做,因为我正在尝试将字典格式化为浮点数(这很有意义)。我还想保留那些我试图截断为浮点数的值,而不是将其转换为字符串。
我正在运行python 2.6.6。感谢您的帮助!
import random
random.seed(5)
numb_unique_chem = 10
numb_rxns = 10
numb_sub = 2
numb_prod = 2
E_pool_size_initial = 3
numb_rxns_cat_initial = 5
class Enzyme(object):
def __init__(self,rxns_cat,specif):
self._rxns_cat = rxns_cat
self._specif = specif
def __repr__(self):
return "Rxns catalyzed: %s, Specificity: %s \n" %(self._rxns_cat, self._specif)
Enzyme_dict = {}
R_pool_size = 10 # Rxn pool size, dictated by the input above
for ID in range(E_pool_size_initial):
Enzyme_dict[ID] = Enzyme([],{})
Enzyme_dict[ID]._rxns_cat = random.sample([n for n in range(10)],numb_rxns_cat_initial)
Enzyme_dict[ID]._specif = {}
for i in Enzyme_dict[ID]._rxns_cat:
Enzyme_dict[ID]._specif[i] = (1.0/len(Enzyme_dict[ID]._rxns_cat))
print Enzyme_dict
如OdraEncoded所建议,您可以简单地调整repr()方法以打印以下内容:
def __repr__(self):
return "Rxns catalyzed: %s, Specificity: %s \n" %(self._rxns_cat, ['%.3f' % spec for spec in self._specif])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句