有什么办法可以将其更改为 for 循环?Python

快乐蜂

我的代码从用户那里获取字典并获取字典中值的平均值,它必须返回列表中具有最高平均值的键。但我想把它变成一个循环。我在底部写了一个代码,但它不起作用。我的

def average(idx):
    return sum(idx) / len(idx)

def mylist(thekey):
        try:
            return max(thekey, key=lambda k: average(thekey[k]))
        except TypeError:
            return -1
thekey = {
        "list_1": [0, 6, 50000, 250],
        "list_2": [772277, 880008, 33300, 1000],
        "list_3": [100000000, 2555555, 2000, 2000]
        }
print(mylist(thekey))

这是我使用 for 循环的代码:

def average(idx):
    return sum(idx) / len(idx)

def mylist(thekey):
    for key, value in thekey.items():
        if all(isinstance(value, int) for value in thekey.items()) == False:
            return -1
        else:
            list = key
            idx = value
            list_avg = {}
            x = average(idx)
            list_avg.update({list: x})
            for maximum in list_avg:
                return max(list_avg[maximum])
thekey = {
        "list_1": [0, 6, 50000, 250],
        "list_2": [772277, 880008, 33300, 1000],
        "list_3": [100000000, 2555555, 2000, 2000]
        }

print(mylist(thekey))
光明

在更新代码的第一个版本时,您可以编写自己的循环来做的唯一有用的事情是重做max已经完成的事情。这让您在max代码的第二个版本中调用自己变得更加奇怪。如果您只想使用max,则不需要自己的循环!

尝试:

def mylist(thekey):
    max_key = None
    max_avg = float('-inf') # negative infinity

    for key, value in thekey.items():  # only one loop needed for this
        try:
            avg = average(value)       # try to get an average
        except TypeError:
            return -1                  # if we can't, give up and bail out early

        if avg > max_avg:              # otherwise, compare with max so far
            max_key = key
            max_avg = avg

    return max_key                     # return only after the loop ends

请注意,您通常不希望return从循环内部进行,除非您遇到需要您退出并放弃循环其余部分的条件。您只想在遇到异常时在此程序中执行此操作(返回-1而不处理其余输入)。否则,您需要等到循环结束才能返回。

我没有在循环体中复制您对所有变量的重命名,因为这既不必要又非常令人困惑。您的list变量不包含列表(它是一个字符串),也不idx包含索引(它是一个列表)。如果您想通过迭代.items()字典为键和值提供有意义的名称,只需在循环中直接使用这些名称for(但如果没有更好的名称也可以)keyvalue

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有办法将此嵌套循环更改为递归循环?

有什么办法可以用更高效的python替换for循环

Python-有什么办法可以避免在for循环中互相包含多个if语句?

有什么办法可以使用python硒中的send_keys更改文本的颜色?

在服务器上获取“ १:१३:१२”类型的持续时间。有什么办法可以将其更改为“ 01:13:12”?

有没有办法将此循环更改为数组/范围引用?

有什么办法可以改善这个循环吗?

有什么办法可以在VBA Excel中修复此循环?

有什么办法可以在numpy的循环中插入列

有什么办法可以用Nim建立循环参考?

Python For , While 循环:将 if-else 更改为循环

Python:有什么办法可以在单个页面应用程序中进行爬网和检测更改?

在 python 中的循环中更改循环变量

Matlab中单引号(')的含义是什么,以及如何将其更改为python

有什么办法可以在Python中打印** kwargs

有什么办法可以让 Python 乌龟超过速度(0)?

有什么办法可以通过 HTML、selenium、python 选择元素

有什么办法可以加速我的python程序吗?

为什么Python for循环不使用while循环循环

有没有办法让条件语句成为我可以传递给 Python 循环的变量?

更改Python循环中的步骤

循环更改模型(keras,python)

有什么办法可以自动将package.json的最新或星号(*)标记更改为特定版本?

有什么办法可以将大多数键绑定更改为更熟悉的功能?

有什么办法可以将下面代码中的 toLowerCase 方法更改为 substring 方法吗?

有什么办法可以将浏览文件按钮更改为它的文件路径?

为什么Python循环变慢?

我想使用python和for循环制作一个简单的计算器。有什么办法可以使它起作用?

有什么办法可以在Java中执行n级嵌套循环?