我已经搜索了数小时的stackoverflow,却没有找到解决我问题的方法。我有一个函数,我希望输出是字典,但是我只能让它输出第一个键+值。由于某些原因,“ yield”语句将不起作用,所以我想知道是否还有另一种方法可以做到这一点。
这是我的代码:
def myfunc(somedict):
x = list(somedict.values())
for i in x:
data = dict_from_otherfunc(i)
mylist = [float(max(data.values()))]
mydict = dict(zip([i], mylist))
return mydict
这将返回一个如下所示的字典:
{'abc': 1}
当我打印而不是返回时,我得到所需的输出。如何使此代码返回一个包含所有值而不是一个值的字典?
编辑: 尝试在for循环之外返回,这仅返回字典的 last 值。
答案 0 :(得分:0)
编辑:如果我理解正确,则问题出在for
循环本身。您可以在每次迭代中设置mydict的值,因此当然它只返回其中之一。
现在,我不确定我是否了解您要执行的操作,但是如果我知道,我建议您尝试以下操作:
def myfunc(somedict):
x = list(somedict.values())
mylist = [float(max(dict_from_otherfunc(i).values()) for i in x] # You can split this into two lines to make it more readable, I suppose
mydict = dict(zip(x, mylist)
return mydict
这样也可以从重命名变量中受益,但是我假设这只是一个例子。