对象方法的Python字典理解
我需要找到一种方法来解决字典理解中的以下错误对象方法的Python字典理解,python,optimization,dictionary,error-handling,list-comprehension,Python,Optimization,Dictionary,Error Handling,List Comprehension,我需要找到一种方法来解决字典理解中的以下错误 from collections import Counter from operator import attrgetter consider points a list of object p = returns[0] p.class 2 Counter(map(attrgetter("class"), points)) Counter({1: 1314, 2: 1050}) p.get_point_source_id() 13612
from collections import Counter
from operator import attrgetter
consider points a list of object
p = returns[0]
p.class
2
Counter(map(attrgetter("class"), points))
Counter({1: 1314, 2: 1050})
p.get_point_source_id()
13612
当我使用相同的方法时,我会收到此错误消息
Counter(map(attrgetter("get_point_source_id()"), points))
Traceback (most recent call last):
File "<editor selection>", line 1, in <module>
AttributeError: 'Point' object has no attribute 'get_point_source_id()'
我有一本字典,每一点都是独一无二的。为了得到字典,我需要写一个慢循环
dict_point_source_id = dict()
for p in returns:
dict_point_source_id[p.get_point_source_id()] = dict_point_source_id.get(p.get_point_source_id(), 0) + 1
print dict_point_source_id
{13612: 2364}
get\u point\u source\u id
是类的一种方法,因此请改用:
艾德:
我怎么知道我知道什么?
在ipython qtconsole中安装,使用*
和?
magics搜索与给定模式匹配的所有属性:
In [356]: import operator
In [357]: operator.*attr*?
operator.__delattr__
operator.__getattribute__
operator.__setattr__
operator.attrgetter
In [358]: operator.*meth*?
operator.methodcaller
或者,使用如下所示的生成器表达式
ct = Counter(pt.get_point_source_id() for pt in points)
谢谢张晓晨,但这是一个列表,而不是一个dictionary@Gianni,它只是一个片段,用
计数器(…
In [356]: import operator
In [357]: operator.*attr*?
operator.__delattr__
operator.__getattribute__
operator.__setattr__
operator.attrgetter
In [358]: operator.*meth*?
operator.methodcaller
ct = Counter(pt.get_point_source_id() for pt in points)