2016-12-27 113 views
-1

我有一个列表,我已经填充了对象。我能够通过使用打印整个对象:如何打印对象的单个值?

print str(vars(theList[0])) 

或循环:

i = 0 
for objects in theList: 

    print str(vars(theList[i])) 
    i+=1 

如果我只想在对象中的一个值,而不是整个对象。

编辑试图进一步澄清问题: 可以说'我有一个包含名称,年龄,地址和电话号码的十个对象的列表。如果我只想索引1对象的名称,而不是索引1处的对象的全部内容。这是目标。

print str(vars(theList[0].itemOne)) 

上面给我TypeError: vars() argument must have __dict__ attribute

我发现使用dic代替vars该建议,但没有奏效另一个问题。它只印了一长串:

['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

+0

要打印列表中的第一个项目的值只是做print(listName [0])编辑:我认为实际发生的事情是列表里面有列表,所以如果你想要第一个项目的第一个项目列表你需要做的事情print(listName [0] [0]) – Octo

+0

不,如我所说,列表是一个对象列表,不是列表中的列表,所以'print(listName [0] [0])'不起作用。按照你的建议尝试抛出这个错误:'对象不支持索引'也如上所述,我知道如何从列表中获取值。我问的是如何只打印对象中的某些项目而不打印对象的全部内容。 – WeVie

+1

对不起,没有正确阅读您的文章。不是重复的,我的回答不起作用 – Octo

回答

1
for object in list_name: 
    print(object) # <--- the "body" 

这是for循环的语法。它为列表中的每个项目执行一次for循环的主体,将项目分配给名称,这里是object

list_name替换为您的列表名称并将object替换为适当的名称。

+0

是的这有效!我可以执行'print(object.object_Item)'并获得我正在寻找的结果。 – WeVie

+0

@ WeVie请接受答案 –