首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解释Python代码

解释Python代码
EN

Stack Overflow用户
提问于 2013-12-13 00:24:52
回答 1查看 418关注 0票数 0

我正在尝试理解下面的python代码。

这是我的解释。

代码语言:javascript
运行
复制
 def __init__(self):
    self.intermediate = {}
    self.result = []

intermediate和result是变量。intermediate的类型为dict。结果的类型为列表

代码语言:javascript
运行
复制
  def emit_intermediate(self, key, value):
    self.intermediate.setdefault(key, [])
    self.intermediate[key].append(value)

如果key在字典中间,那么从这个方法返回它的值。(如果返回值,这一行:self.intermediatekey.append(值)还会被执行吗?)如果键不在字典中,则将一个值为空列表的键插入到字典中间。如果已经插入了键,则将该值附加到与该键关联的列表中。

代码语言:javascript
运行
复制
def emit(self, value):
    self.result.append(value)

将值追加到结果列表中

下面是完整的代码:

代码语言:javascript
运行
复制
  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) 
EN

回答 1

Stack Overflow用户

发布于 2013-12-13 00:30:05

代码语言:javascript
运行
复制
self.intermediate.setdefault(key, [])

告诉您键的值将是什么,如果它还不存在。因此,如果您插入一个不在self.intermediate中的键,它将使用该键创建一个新条目,并为其提供值[]

然后,下一行"self.intermediate[key].append(value)“(总是被执行)总是有一个可以追加的列表;可以是来自self.intermediate.setdefault(key, [])的新列表,也可以是以前创建的列表。

所以:

代码语言:javascript
运行
复制
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]}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20548754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档