在Python中格式化对象内的字典

2024-09-30 00:39:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一段代码,它创建了一个字典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

Tags: inselfidforsize字典randomdict
1条回答
网友
1楼 · 发布于 2024-09-30 00:39:32

正如OdraEncoded所建议的,您只需调整repr()方法即可打印以下内容:

def __repr__(self):
        return "Rxns catalyzed: %s, Specificity: %s \n" %(self._rxns_cat, ['%.3f' % spec for spec in self._specif])

相关问题 更多 >

    热门问题