我正在尝试理解下面的python代码。
这是我的解释。
def __init__(self):
self.intermediate = {}
self.result = []intermediate和result是变量。intermediate的类型为dict。结果的类型为列表
def emit_intermediate(self, key, value):
self.intermediate.setdefault(key, [])
self.intermediate[key].append(value)如果key在字典中间,那么从这个方法返回它的值。(如果返回值,这一行:self.intermediatekey.append(值)还会被执行吗?)如果键不在字典中,则将一个值为空列表的键插入到字典中间。如果已经插入了键,则将该值附加到与该键关联的列表中。
def emit(self, value):
self.result.append(value)将值追加到结果列表中
下面是完整的代码:
def __init__(self):
self.intermediate = {}
self.result = []
def emit_intermediate(self, key, value):
self.intermediate.setdefault(key, [])
self.intermediate[key].append(value)
def emit(self, value):
self.result.append(value) 发布于 2013-12-13 00:30:05
self.intermediate.setdefault(key, [])告诉您键的值将是什么,如果它还不存在。因此,如果您插入一个不在self.intermediate中的键,它将使用该键创建一个新条目,并为其提供值[]。
然后,下一行"self.intermediate[key].append(value)“(总是被执行)总是有一个可以追加的列表;可以是来自self.intermediate.setdefault(key, [])的新列表,也可以是以前创建的列表。
所以:
someobjectofthisclass.emit_intermediate("foo", 1)
print(someobjectofthisclass.intermediate)
>> {"foo":[1]}
someobjectofthisclass.emit_intermediate("foo", 1)
someobjectofthisclass.emit_intermediate("foo", 2)
someobjectofthisclass.emit_intermediate("bar", 1)
print(someobjectofthisclass.intermediate)
>> {"foo":[1,1,2], "bar":[1]}https://stackoverflow.com/questions/20548754
复制相似问题