Saltar al contenido principal
LibreTexts Español

17.2.2: Diccionarios

  • Page ID
    117349
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)

    ( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\id}{\mathrm{id}}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\kernel}{\mathrm{null}\,}\)

    \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\)

    \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\)

    \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    \( \newcommand{\vectorA}[1]{\vec{#1}}      % arrow\)

    \( \newcommand{\vectorAt}[1]{\vec{\text{#1}}}      % arrow\)

    \( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vectorC}[1]{\textbf{#1}} \)

    \( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)

    \( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)

    \( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)

    \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \(\newcommand{\avec}{\mathbf a}\) \(\newcommand{\bvec}{\mathbf b}\) \(\newcommand{\cvec}{\mathbf c}\) \(\newcommand{\dvec}{\mathbf d}\) \(\newcommand{\dtil}{\widetilde{\mathbf d}}\) \(\newcommand{\evec}{\mathbf e}\) \(\newcommand{\fvec}{\mathbf f}\) \(\newcommand{\nvec}{\mathbf n}\) \(\newcommand{\pvec}{\mathbf p}\) \(\newcommand{\qvec}{\mathbf q}\) \(\newcommand{\svec}{\mathbf s}\) \(\newcommand{\tvec}{\mathbf t}\) \(\newcommand{\uvec}{\mathbf u}\) \(\newcommand{\vvec}{\mathbf v}\) \(\newcommand{\wvec}{\mathbf w}\) \(\newcommand{\xvec}{\mathbf x}\) \(\newcommand{\yvec}{\mathbf y}\) \(\newcommand{\zvec}{\mathbf z}\) \(\newcommand{\rvec}{\mathbf r}\) \(\newcommand{\mvec}{\mathbf m}\) \(\newcommand{\zerovec}{\mathbf 0}\) \(\newcommand{\onevec}{\mathbf 1}\) \(\newcommand{\real}{\mathbb R}\) \(\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}\) \(\newcommand{\laspan}[1]{\text{Span}\{#1\}}\) \(\newcommand{\bcal}{\cal B}\) \(\newcommand{\ccal}{\cal C}\) \(\newcommand{\scal}{\cal S}\) \(\newcommand{\wcal}{\cal W}\) \(\newcommand{\ecal}{\cal E}\) \(\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}\) \(\newcommand{\gray}[1]{\color{gray}{#1}}\) \(\newcommand{\lgray}[1]{\color{lightgray}{#1}}\) \(\newcommand{\rank}{\operatorname{rank}}\) \(\newcommand{\row}{\text{Row}}\) \(\newcommand{\col}{\text{Col}}\) \(\renewcommand{\row}{\text{Row}}\) \(\newcommand{\nul}{\text{Nul}}\) \(\newcommand{\var}{\text{Var}}\) \(\newcommand{\corr}{\text{corr}}\) \(\newcommand{\len}[1]{\left|#1\right|}\) \(\newcommand{\bbar}{\overline{\bvec}}\) \(\newcommand{\bhat}{\widehat{\bvec}}\) \(\newcommand{\bperp}{\bvec^\perp}\) \(\newcommand{\xhat}{\widehat{\xvec}}\) \(\newcommand{\vhat}{\widehat{\vvec}}\) \(\newcommand{\uhat}{\widehat{\uvec}}\) \(\newcommand{\what}{\widehat{\wvec}}\) \(\newcommand{\Sighat}{\widehat{\Sigma}}\) \(\newcommand{\lt}{<}\) \(\newcommand{\gt}{>}\) \(\newcommand{\amp}{&}\) \(\definecolor{fillinmathshade}{gray}{0.9}\)

    Colores de Frutas

    En Python y SueMath, un diccionario es una estructura de datos conveniente para establecer una relación entre conjuntos de datos. Desde el punto de vista de este texto, podemos pensar en un diccionario como una realización concreta de una relación entre dos conjuntos o sobre un solo conjunto. Un diccionario se asemeja a una función en que hay un conjunto de valores de datos llamados claves, y para cada clave, hay un valor. El valor asociado a una clave puede ser casi cualquier cosa, pero lo más común es una lista.

    Para ilustrar el uso de diccionarios, definiremos una relación entre colores y frutos. Las claves serán un conjunto de colores y los valores asociados a cada color serán una lista de frutas que pueden tomar ese color. Demostraremos cómo inicializar el diccionario y cómo agregarlo. Las siguientes series de asignaciones no tienen salida, por lo que agregamos una sentencia print para verificar que esta celda esté completamente evaluada.

    fruit_color={}
    fruit_color['Red']=['apple','pomegranate','blood orange']
    fruit_color['Yellow']=['banana','apple','lemon']
    fruit_color['Green']=['apple','pear','grape','lime']
    fruit_color['Purple']=['plum','grape']
    fruit_color['Orange']=['orange','pineapple']
    print('done')
    

    Distinguimos un color de una fruta capitalizando colores pero no fruta. Las claves de este diccionario son los colores. El método keys () devuelve un interator; así que para obtener una lista de claves envolvemos el resultado con list ().

    list(fruit_color.keys())
    

    Como idea de último momento, podríamos agregar la información de que una frambuesa es roja de la siguiente manera. Hay que tener cuidado en que si 'Rojo' no está ya en el diccionario, no tiene valor. Es por ello que necesitamos una declaración if.

    if 'Red' in fruit_color:
        fruit_color['Red']=fruit_color['Red']+['raspberry']
    else:
        fruit_color['Red']=['raspberry']
    fruit_color['Red']
    

    Un diccionario es iterable, con un iterador tomando valores que son las claves. Aquí iteramos sobre nuestro diccionario para generar listas que consisten en un color seguido de una lista de frutas que vienen en ese color.

    for fruit in fruit_color:
        print([fruit,fruit_color[fruit]])
    

    Podemos ver una gráfica de esta relación entre colores y frutas, pero la vista por defecto es un poco poco convencional.

    DiGraph(fruit_color).plot()
    

    Con un poco de codificación adicional podemos alinear los colores y frutas en su propia columna. Primero establecemos las posiciones de colores a la izquierda con todas las\(x\) coordenadas iguales a -5 usando otro diccionario llamado vertex_pos.

    vertex_pos={}
    k=0
    for c in fruit_color.keys():
        vertex_pos[c]=(-5,k)
        k+=1
    vertex_pos
    

    A continuación, colocamos los vértices del fruto en otra columna con\(x\) coordenadas -todas iguales a 5. Para ello, primero recolectamos todos los valores de los frutos en un conjunto que llamamos frutas.

    fruits=Set([ ])
    for v in fruit_color.values():
         fruits=fruits.union(Set(v))
    k=0
    for f in fruits:
        vertex_pos[f]=(5,k)
        k+=1
    vertex_pos
    

    Ahora la gráfica parece una gráfica convencional para una relación entre dos conjuntos diferentes. Observe que no es una función.

    DiGraph(fruit_color).plot(pos=vertex_pos,vertex_size=1)
    

    17.2.2: Diccionarios is shared under a not declared license and was authored, remixed, and/or curated by LibreTexts.