如何最好地打印由用户定义的实例变量创建的字典?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何最好地打印由用户定义的实例变量创建的字典?相关的知识,希望对你有一定的参考价值。

我正在尝试将母牛编成字典,访问它们的值,并将其打印到控制台。

将Cow的每个实例分配给list Cow中的索引。

我正在尝试如下创建字典:

for i in cows:
    cowDict[i.getName] = (i.getWeight, i.getAge)

我希望能够使用我的母牛的名字访问字典的值,即:

c["maggie"]

但是,我的代码产生一个关键错误。

如果我打印整个词典,我会得到一些效果:

“ >:((>,>),等...

我可以用实例变量替换.getName并获得所需的结果,但是,我建议不要使用这种方法。

使用Cow类型的实例变量创建字典的最佳实践是什么。>>

代码:

class cow(object):
    """ A class that defines the instance objects name, weight and age associated
        with cows
    """
    def __init__(self, name, weight, age):
        self.name = name
        self.weight = weight
        self.age = age
    def getName(self):
        return self.name
    def getWeight(self):
        return self.weight
    def getAge(self):
        return self.age
    def __repr__(self):
        result = '<' + self.name + ', '  + str(self.weight) + ', ' + str(self.age) + '>'
        return result

def buildCows():
    """
    this function returns a dictionary of cows
    """
    names = ['maggie', 'mooderton', 'miles', 'mickey', 'steve', 'margret', 'steph']
    weights = [3,6,10,5,3,8,12]
    ages = [1,2,3,4,5,6,7]
    cows = []
    cowDict = 
    for i in range(len(names)):
        #creates a list cow, where each index of list cow is an instance 
        #of the cow class
        cows.append(cow(names[i],weights[i],ages[i]))
    for i in cows:
        #creates a dictionary from the cow list with the cow name as the key
        #and the weight and age as values stored in a tuple
        cowDict[i.getName] = (i.getWeight, i.getAge)
    #returns a dictionary
    return cowDict

c = buildCows()

我正在尝试将母牛整理成字典,访问它们的值,并将其打印到控制台。 Cow的每个实例都分配给list Cow中的索引。我正在尝试将字典创建为...

答案

getName是一个函数,请尝试

另一答案

您可以使用类似的方法简化此操作:

另一答案

这看起来像是zip的工作。我们可以将其与dict理解结合使用,以从任意键和值表达式创建字典,如下所示

以上是关于如何最好地打印由用户定义的实例变量创建的字典?的主要内容,如果未能解决你的问题,请参考以下文章

如何比任何其他全局或静态变量更早地创建/构造类实例?

python 变量定义和打印输出实例

java中啥是堆和栈,如何应用,最好举个例子,并详细地说明一下,谢谢了

Lua没有足够快地实例化局部变量来打印它?嵌入式ESP8266

在 Python 中使用类实例树

Java中的实例变量是啥?