首页 > 解决方案 > 如何在“for”循环中打印最大值?

问题描述

基本上,如果我在函数中引入字典,我需要让我的代码打印具有最高“promedio”变量值的元组。我被卡住了,因为我的代码只打印最新的结果而不是最高的,这里是:

def mejor_promedio_anual(datos: dict):
empleados = datos
for clave in empleados:
    nombre_empleado = empleados[clave]["nombre_emp"]
    primeras_tres:str = empleados[clave]["nombre_emp"][0:3]
    cedula = int(empleados[clave]["cedula"])
    digitos_cedula = [int(n) for n in str(cedula)]
    pares_int = [x for x in digitos_cedula if x%2 == 0]
    sumatoria_impares = sum([x for x in digitos_cedula if x%2 != 0])
    multip_impares = "".join([str(num*sumatoria_impares) for num in pares_int])
        #Codigo Empleado
    codigo_unico:str = primeras_tres + multip_impares

    ventas_totales = 0
    for a in empleados[clave]["ventas"]:
        for b in a.values():
            for value in b.values():
                ventas_totales+=value
    promedio = round(ventas_totales/48, 2)
    tupla = (codigo_unico, nombre_empleado, promedio)
return tupla

这是我的功能,我要添加一个字典,然后打印,就是这样:

datos = {
    "Ju1234": {
        "nombre_emp": 'Juan',
        "cedula": '12345679',
        "edad": '28',
        "ventas": [
            {
                "enero": {
                    "camisas": 1500000,
                    "jeans": 2450000,
                    "vestidos": 800000,
                    "zapatos": 1300000
                }
            },
            {
                "febrero": {
                    "camisas": 134000,
                    "jeans": 600000,
                    "vestidos": 700000,
                    "zapatos": 900000
                }
            },
            {
                "marzo": {
                    "camisas": 1000000,
                    "jeans": 1400000,
                    "vestidos": 1600000,
                    "zapatos": 1800000
                }
            },
            {
                "abril": {
                    "camisas": 1900000,
                    "jeans": 2450000,
                    "vestidos": 1400000,
                    "zapatos": 300000
                }
            },
            {
                "mayo": {
                    "camisas": 1800000,
                    "jeans": 2750000,
                    "vestidos": 1200000,
                    "zapatos": 200000
                }
            },
            {
                "junio": {
                    "camisas": 1700000,
                    "jeans": 2000000,
                    "vestidos": 1900000,
                    "zapatos": 500000
                }
            },
            {
                "julio": {
                    "camisas": 1600000,
                    "jeans": 2780000,
                    "vestidos": 1500000,
                    "zapatos": 700000
                }
            },
            {
                "agosto": {
                    "camisas": 1500000,
                    "jeans": 2250000,
                    "vestidos": 1100000,
                    "zapatos": 200000
                }
            },
            {
                "septiembre": {
                    "camisas": 1100000,
                    "jeans": 2540000,
                    "vestidos": 1200000,
                    "zapatos": 400000
                }
            },
            {
                "octubre": {
                    "camisas": 1400000,
                    "jeans": 2120000,
                    "vestidos": 1400000,
                    "zapatos": 500000
                }
            },
            {
                "noviembre": {
                    "camisas": 1300000,
                    "jeans": 2230000,
                    "vestidos": 1700000,
                    "zapatos": 200000
                }
            },
            {
                "diciembre": {
                    "camisas": 1000000,
                    "jeans": 2480000,
                    "vestidos": 1800000,
                    "zapatos": 100000
                }
            }
        ]
    },
    "Ma9876": {
        "nombre_emp": 'Martha',
        "cedula": '987654321',
        "edad": '25',
        "ventas": [
            {
                "enero": {
                    "camisas": 980000,
                    "jeans": 4200000,
                    "vestidos": 940000,
                    "zapatos": 500000
                }
            },
            {
                "febrero": {
                    "camisas": 910000,
                    "jeans": 6400000,
                    "vestidos": 140000,
                    "zapatos": 480000
                }
            },
            {
                "marzo": {
                    "camisas": 920000,
                    "jeans": 4300000,
                    "vestidos": 240000,
                    "zapatos": 410000
                }
            },
            {
                "abril": {
                    "camisas": 980000,
                    "jeans": 4200000,
                    "vestidos": 540000,
                    "zapatos": 402000
                }
            },
            {
                "mayo": {
                    "camisas": 920000,
                    "jeans": 4700000,
                    "vestidos": 540000,
                    "zapatos": 980000
                }
            },
            {
                "junio": {
                    "camisas": 900000,
                    "jeans": 4600000,
                    "vestidos": 650000,
                    "zapatos": 290000
                }
            },
            {
                "julio": {
                    "camisas": 890000,
                    "jeans": 4200000,
                    "vestidos": 190000,
                    "zapatos": 720000
                }
            },
            {
                "agosto": {
                    "camisas": 130000,
                    "jeans": 9200000,
                    "vestidos": 960000,
                    "zapatos": 870000
                }
            },
            {
                "septiembre": {
                    "camisas": 210000,
                    "jeans": 5400000,
                    "vestidos": 180000,
                    "zapatos": 980000
                }
            },
            {
                "octubre": {
                    "camisas": 250000,
                    "jeans": 3400000,
                    "vestidos": 140000,
                    "zapatos": 450000
                }
            },
            {
                "noviembre": {
                    "camisas": 430000,
                    "jeans": 1500000,
                    "vestidos": 100000,
                    "zapatos": 420000
                }
            },
            {
                "diciembre": {
                    "camisas": 560000,
                    "jeans": 4500000,
                    "vestidos": 720000,
                    "zapatos": 400000
                }
            }
        ]
    }
}
print(mejor_promedio_anual(datos))

如果执行此代码,它将打印元组('Mar20015010050','Martha',1602541.67),这是循环中的最后一个(第二个字典键),但我需要我的代码来打印具有最高“promedio”的元组",对于我添加到字典中的任何值,我该怎么做?

非常感谢!

标签: python

解决方案


您可以:

  1. 在 for 循环之前创建一个空列表
  2. 将每个 tupla 结果附加到该列表中
  3. 然后使用max(list, key=lambda t: t[2])找到最大的(按元组中的第三个值排序),并返回

或者:

  1. 创建一个“current_largest_tupla”变量(占位符为 0)
  2. 在for循环中,检查每个结果是否大于最大值,如果是则替换
  3. 最后,返回该值

推荐阅读