首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将关键字上的迭代作为字符串返回?

如何将关键字上的迭代作为字符串返回?
EN

Stack Overflow用户
提问于 2014-03-28 02:47:16
回答 2查看 43关注 0票数 0

我试图返回一个字符串,该字符串包含字典中每个对象的两个属性值及其键。每一行都是一个键和它的对象的两个属性。问题是,由于返回语句结束了函数,所以我只得到第一个键。我可以通过打印获得结果,但我需要函数来返回result.This,这是我尝试的函数:

代码语言:javascript
运行
复制
    aemptystring = ""
    for key in self.cases.keys():
        a = key, self.cases[key].color, self.cases[key].thetype
        b = str(a) + "\n"
        result = aemptystring + b
        return result

它给了我这个:

代码语言:javascript
运行
复制
"((3, 0), 'blanc', 'pion')\n"

它只在1键.The字典中使用数字元组作为键,例如(3,0),其对象的属性是.color,可以是"noir“或”be“,.thetype是"pion”或"dame“。

如果我使用print(aemptystring + b),我会得到我想要的每个键的迭代,如下所示:

代码语言:javascript
运行
复制
((3, 0), 'blanc', 'pion')

((5, 4), 'blanc', 'pion')

((2, 1), 'noir', 'pion')

((1, 6), 'noir', 'pion')

....etc

如何获得函数来返回迭代的结果,就像打印给我的那样?我不能只使用print,因为我需要稍后使用这个函数的返回,on.The返回也需要是一个字符串。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-28 02:56:10

不要在循环中return。:)

你和aemptystring差点就到了。你只需要不断地加进去。

代码语言:javascript
运行
复制
result = ""
for key in self.cases.keys():
    a = key, self.cases[key].color, self.cases[key].thetype
    b = str(a) + "\n"
    result = result + b
return result

但是,重复连接字符串是二次型的,所以最好先构建一个列表,然后加入它。

代码语言:javascript
运行
复制
lines = []
for key in self.cases.keys():
    a = key, self.cases[key].color, self.cases[key].thetype
    lines.append(str(a) + "\n")
return ''.join(lines)

您可以使用.items()和一些字符串格式使其更短一些。

代码语言:javascript
运行
复制
lines = []
for key, case in self.cases.items():
    a = key, case.color, case.thetype
    lines.append("{0!r}\n".format(a))
return ''.join(lines)

但是,像这样返回一个大字符串的Python有点奇怪。好奇:这条绳子是用来做什么的?

票数 0
EN

Stack Overflow用户

发布于 2014-03-28 02:59:16

您可以将结果追加到列表中,并在for循环之外返回结果列表,也可以使用名为生成器的方法,它允许函数在返回值后继续执行。

代码语言:javascript
运行
复制
def generate_stuff():

    for key in self.cases.keys():
        a = key, self.cases[key].color, self.cases[key].thetype
        yield str(a) + "\n"

for result in generate_stuff():
    print result
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22703262

复制
相关文章

相似问题

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