0

给定包含 m 个键值对的 n 个模型,namedtuples 可以用于将这些信息整合到一个对象中吗?通过整合,我的意思是重构,以便我可以绕过这个对象并从中访问特定的信息位。

目前的组织方式:

Model_1_Dict = {'key1':('value1','value2','value3'),'key2':('value1','value2','value3')}

Model_2_Dict = {'key1':('value1','value2','value3'),'key2':('value1','value2','value3')}

每个模型字典的每个键都有 3 个值对。键表示自变量名称(来自回归模型),值表示 beta 系数、计算值 (x) 和相关函数......语义上像这样:

>>> Model_1_Dict["Variable Name"]
("Beta Coefficient", "Calculated Value", "myClass.myFunction")

Model_1_Dict["Variable Name"][1]稍后在代码中更新。我可以= None在初始化时通过,然后更新计算值。或者稍后将值附加到值列表对象(我认为这不是问题)。

我想知道是否有更好的方法来使用其他结构(例如命名元组)来处理模型信息?

4

1 回答 1

1

是的,您可以使用命名元组——直到您说您必须更新字典中的信息为止。元组和命名元组都不可修改。因此,如果您想通过名称 ratehr 而不是索引号来处理引用它的数据,您应该使用嵌套字典结构 - 或创建一个简单的类来保存您的数据。

为此创建自定义类的优点是您可以通过__slots__在类上具有属性来限制分配给它的名称,并且您可以自定义__repr__对象的属性,以便在检查时看起来不错 -

伴随着一些东西:

class Data(object):
    __slots__ = ("beta", "calculated", "function")
    def __init__(self, beta=None, calculated=None, function=None):
        self.beta = beta; self.calculated = calculated; self.function = function

    def __repr__(self):
        return "(%s, %s, %s)"  % (self.beta, self.calculated, self.function)

像这样工作:

>>> Model_1_Dict = {'key1':Data('value1','value2','value3') } 
>>> 
>>> Model_1_Dict
{'key1': (value1, value2, value3)}
>>> Model_1_Dict["key1"].beta = "NewValue"
>>> Model_1_Dict
{'key1': (NewValue, value2, value3)}
>>> 
于 2012-07-12T02:21:18.590 回答