我有一段代码,它创建了一个字典Enzyme_dict
,然后用对象(来自class Enzyme
)填充该字典。这类对象的属性之一本身就是字典(self._specif
)。组成该属性的字典中充满了几个值,它们都等于1.0/5
。由于机器精度的原因,这个值被打印为0.20000000000000001
,这使得打印包含许多这些值的字典变得不可读。你知道吗
我希望能够编写print Enzyme_dict
,并让它将所有机器舍入的浮点值打印为.200
或其他内容,而不是笨拙的0.20000000000000001
。我该怎么做?你知道吗
当我试图用%.3f
格式化类本身中的__repr__
输出时,它告诉我我做不到,因为我试图将字典格式化为浮点(这是有意义的)。我还希望将那些我试图截断的值保留为浮点数,而不是将它们转换为字符串。你知道吗
我正在运行python2.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()方法即可打印以下内容:
相关问题 更多 >
编程相关推荐