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.

Convertir un dict en una tupla de tuplas (const).

Quiero convertir un diccionario en una tupla de tuplas.

from typing import Dict, Tuple

class Data:
    def <strong>init</strong>(self, d: Dict[int, str]) -> None:
        self.data: Tuple[Tuple[int, str], ...] = ()
        for k, v in d.items():
            self.data += ((k, v),)

d = Data({5: "cinco", 4: "cuatro"})
print(d.data)

Esto es algo similar a esta pregunta, pero no es idéntico. La razón por la que prefiero una tupla de tuplas es por la constancia. ¿Existe una mejor manera (o una manera más pythonica) de lograr esto?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en python, diccionarios, tuplas y constantes, sugiero el siguiente código para convertir un diccionario en una tupla de tuplas:

    mi_diccionario = {1: 'a', 2: 'b', 3: 'c'}
    mi_tupla = tuple(mi_diccionario.items())
    

    Este código crea una tupla de tuplas directamente desde el método items() del diccionario. El método items() devuelve un objeto de vista que contiene los pares clave-valor del diccionario como una lista de tuplas. La función tuple() convierte esta lista de tuplas en una tupla de tuplas.

    En el contexto del código proporcionado, se pueden realizar las siguientes modificaciones para lograr el mismo resultado:

    class Datos:
        def __init__(self, d: Dict[int, str]) -> None:
            self.datos: Tuple[Tuple[int, str], ...] = tuple(d.items())
    

    Este código inicializa un objeto Datos con un diccionario d, lo convierte en una tupla de tuplas utilizando el método items() del diccionario y lo asigna al atributo datos del objeto. Este código simplifica el código original y logra el mismo resultado de una manera más “Pythonic”.

Comments are closed.