我的理解是.items()只适用于python词典。
然而,在以下完美运行的代码中,似乎.items()函数对于字符串是可用的。 (此代码用于doc2vec的预处理阶段)
我已经看了一段时间,我无法弄清楚为什么.items()似乎在这段代码中起作用。
在代码中,'来源'只是一个实例的属性。然而它能够调用.items()。
我在这里缺少什么?
class LabeledLineSentence(object):
def __init__(self, sources):
self.sources = sources
flipped = {}
# make sure that keys are unique
for key, value in sources.items():
if value not in flipped:
flipped[value] = [key]
else:
raise Exception('Non-unique prefix encountered')
答案 0 :(得分:0)
.items()适用于具有items方法的任何类。例如,我可以定义
class MyClass:
def items(self):
return [1,2,3,4]
然后运行
mc = MyClass()
for i in mc.items(): print(i)
据推测,您的sources
对象属于具有此类属性的类。但我们不知道是什么,因为它是LabeledLineSentence
的构造函数的论据。
您能指出我们的完整源代码吗?然后我们可以看到传入的内容。
答案 1 :(得分:0)
给定代码仅指定sources是实例的属性。它没有指定其类型。实际上,它可以是在创建LabeledLineSentence实例时指定的任何类型。
i1 = LabeledLineSentence('sample text') # sources is now a string. Throws error!
i2 = LabeledLineSentence({}) # source is a now a dictionary. No error!
请注意,LabeledLineSentence实现要求sources参数为字典。