Python - Diccionario

En el Diccionario, cada clave está separada de su valor por dos puntos (:), los elementos están separados por comas y todo el contenido está entre llaves. Un diccionario vacío sin elementos se escribe con solo dos llaves, como esta: {}.

Las claves son únicas dentro de un diccionario, mientras que los valores pueden no serlo. Los valores de un diccionario pueden ser de cualquier tipo, pero las claves deben ser de un tipo de datos inmutable como cadenas, números o tuplas.

Acceso a valores en el diccionario

Para acceder a los elementos del diccionario, puede utilizar los familiares corchetes junto con la clave para obtener su valor. A continuación se muestra un ejemplo simple:

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Name']: ", dict['Name']
print "dict['Age']: ", dict['Age']

Cuando se ejecuta el código anterior, produce el siguiente resultado:

dict['Name']:  Zara
dict['Age']:  7

Si intentamos acceder a un elemento de datos con una clave, que no es parte del diccionario, obtenemos el siguiente error:

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Alice']: ", dict['Alice']

Cuando se ejecuta el código anterior, produce el siguiente resultado:

dict['Alice']:
Traceback (most recent call last):
   File "test.py", line 4, in <module>
      print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'

Actualizar diccionario

Puede actualizar un diccionario agregando una nueva entrada o un par clave-valor, modificando una entrada existente o eliminando una entrada existente como se muestra a continuación en el ejemplo simple:

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8; # update existing entry
dict['School'] = "DPS School"; # Add new entry

print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']

Cuando se ejecuta el código anterior, produce el siguiente resultado:

dict['Age']:  8
dict['School']:  DPS School

Eliminar elementos del diccionario

Puede eliminar elementos individuales del diccionario o borrar todo el contenido de un diccionario. También puede eliminar el diccionario completo en una sola operación.

Para eliminar explícitamente un diccionario completo, simplemente use el deldeclaración. A continuación se muestra un ejemplo simple:

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['Name']; # remove entry with key 'Name'
dict.clear();     # remove all entries in dict
del dict ;        # delete entire dictionary

print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']

Esto produce el siguiente resultado. Tenga en cuenta que se genera una excepción porque despuésdel dict el diccionario ya no existe -

dict['Age']:
Traceback (most recent call last):
   File "test.py", line 8, in <module>
      print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable

Note - El método del () se analiza en la sección siguiente.

Propiedades de las claves del diccionario

Los valores del diccionario no tienen restricciones. Pueden ser cualquier objeto de Python arbitrario, ya sea objetos estándar u objetos definidos por el usuario. Sin embargo, no ocurre lo mismo con las claves.

Hay dos puntos importantes para recordar acerca de las claves del diccionario:

(a)No se permite más de una entrada por clave. Lo que significa que no se permiten claves duplicadas. Cuando se encuentran claves duplicadas durante la asignación, la última asignación gana. Por ejemplo

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'}
print "dict['Name']: ", dict['Name']

Cuando se ejecuta el código anterior, produce el siguiente resultado:

dict['Name']:  Manni

(b)Las claves deben ser inmutables. Lo que significa que puede usar cadenas, números o tuplas como claves de diccionario, pero algo como ['clave'] no está permitido. A continuación se muestra un ejemplo simple:

#!/usr/bin/python

dict = {['Name']: 'Zara', 'Age': 7}
print "dict['Name']: ", dict['Name']

Cuando se ejecuta el código anterior, produce el siguiente resultado:

Traceback (most recent call last):
   File "test.py", line 3, in <module>
      dict = {['Name']: 'Zara', 'Age': 7};
TypeError: list objects are unhashable