从函数

时间:2018-10-18 15:40:53

标签: python python-3.x dictionary return

我已经搜索了数小时的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 值。

1 个答案:

答案 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

这样也可以从重命名变量中受益,但是我假设这只是一个例子。