我想传递整个字典的键,在循环中调用另外两个值,因此将逐行组合和打印。值将传递给另一个函数,但只传递整个字典的第一个值。我希望所有值都如下所示传递,以及其他变量。我会做什么,以便所有的值不仅仅传递一个。
这是我的代码:
class scoring:
def values(self):
dicts = {}
inner_dict = {}
with open("1.txt","r") as f:
for line, score in zip(sys.stdin, f):
d2 = ast.literal_eval(score)
for key,v in d2.items():
inner_dict = dicts.setdefault(key, {})
inner_dict['s'] = v.get('s')
sent = dicts[key]['s']
binary = re.split("\s+", line.strip())[0]
return key, sent, binary
def score(self,key,sent,binary):
<something>
if __name__ == "__main__":
call = scoring()
key,sent,binary = call.values()
call.score(key,sent,binary)
答案 0 :(得分:0)
我没有在python中进行过真正的编码,但我猜你是从内循环的第一次迭代返回的,这可能就是为什么其他值永远不会返回。您可以保存所有值列表,然后可以从列表中返回列表和访问值。
class scoring:
def values(self):
dicts = {}
list = []
inner_dict = {}
with open("1.txt","r") as f:
for line, score in zip(sys.stdin, f):
d2 = ast.literal_eval(score)
for key,v in d2.items():
inner_dict = dicts.setdefault(key, {})
inner_dict['s'] = v.get('s')
sent = dicts[key]['s']
binary = re.split("\s+", line.strip())[0]
list.append((key, sent, binary))
return key, sent, binary
def score(self,key,sent,binary):
<something>
if __name__ == "__main__":
call = scoring()
lst = call.values()
for l in lst :
call.score(l[0],l[1],l[2])
基本思想是做这样的事情:
lst = []
lst.append((1,2,3))
lst.append((4,5,6))
for l in lst :
print l[0], l[1], l[2]
它会打印
1 2 3
4 5 6
答案 1 :(得分:0)
您的return
语句位于两个for
循环内。这意味着在return
语句离开函数之前,您只需要经历一次循环。在没有更多信息的情况下,我可以提供这些帮助,因为您可能希望使用yield
或创建列表或定义可由整个类引用的类属性。阶段提供更详细的期望输出。