es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Bucles y condiciones en Python.

Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown.

” Soy nuevo en Python y me preguntaba si había una forma de acortar / optimizar los siguientes ciclos: ”

“ `
para desglose en desglose de datos:
para fuente de datos en IDs de fuente de datos:
para cámara en ids de cámara:
si (camera.get (& quot; id & quot;) == data_source.get (& quot; parent_id & quot;)) y (data_source.get (& quot; id & quot;) == breakdown.get (& # 39; parent_id & # 39;)):
para res en resultado:
si res.get (& quot; camera_id & quot;) == camera.get (& quot; id & quot;):
res.get (& # 39; data & # 39;). actualizar ({breakdown.get (& # 39; name & # 39;): breakdown.get (& # 39; total & # 39;)})“`

“Intenté este oneliner, pero no parece funcionar:”

`
res.get (& # 39; datos & # 39;). actualizar ({breakdown.get (& # 39; nombre & # 39;): breakdown.get (& # 39; total & # 39;)}) para la cámara en los identificadores de la cámara si (camera.get (& quot; id & quot;) == data_source.get (& quot; parent_id & quot;)) y (data_source.get (& quot; id & quot;) == breakdown.get (& # 39; parent_id & # 39;))
`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en Python, bucles y declaraciones condicionales, sugiero usar la comprensión de listas para optimizar su código. Aquí hay un ejemplo:

    [ res.get('data').update({breakdown.get('name'): breakdown.get('total')}) for breakdown in data_breakdown for data_source in data_source_ids for camera in camera_ids if camera.get('id') == data_source.get('parent_id') and data_source.get('id') == breakdown.get('parent_id') for res in result if res.get('camera_id') == camera.get('id')]
    

    Este código utiliza una única comprensión de lista en lugar de bucles anidados. Primero recorre data_breakdown, data_source_ids y camera_ids utilizando una única declaración for, y luego filtra las combinaciones que satisfacen las condiciones en la declaración if. Finalmente, recorre result y actualiza los datos relevantes.

    Tenga en cuenta que este código no crea una nueva lista, sino que modifica directamente el diccionario res['data'] existente. Si desea crear una nueva lista, puede modificar el código en consecuencia.

Comments are closed.