2.1.6 Tipos correspondencia

Un objeto correspondencia hace corresponder valores de un tipo (el tipo clave) a objetos arbitrarios. Las correspondencias son objetos mutables. En la actualidad, sólo hay un tipo correspondencia estándar, el diccionario. Las claves de un diccionario pueden ser valores casi arbitrarios. Los únicos tipos de valores inaceptables como claves son los valores que contengan listas, diccionarios u otro tipo mutable que se compare por su valor, en lugar de por su identidad como objeto. Los tipos numéricos utilizados como claves obedecen a las reglas usuales de comparación: si dos números resultan iguales si se comparan (por ejemplo 1 y 1.0) se pueden usar intercambiablemente para indicar la misma entrada en el diccionario.

Los diccionarios se crean colocando una lista separada por comas de pares key: value, entre llaves, por ejemplo: {'jack': 4098, 'sjoerd': 4127} o {4098: 'jack', 4127: 'sjoerd'}.

Se definen las siguientes operaciones sobre correspondencias (donde a y b son correspondencias, k es una clave, y v y x son objetos arbitrarios):

Operación  Resultado  Notas 
len(a) el número de elementos de a  
a[k] el elemento de a cuya clave es k (1)
a[k] = v establece a[k] a v  
del a[k] elimina a[k] de a (1)
a.clear() elimina todos los elementos de a  
a.copy() copia (superficial) de a  
a.has_key(k) 1 si a tiene una clave k, en caso contrario 0  
a.items() una copia de la lista de pares (key, value) de a (2)
a.keys() una copia de la lista de claves de a (2)
a.update(b) for k in b.keys(): a[k] = b[k] (3)
a.values() una copia de la lista de valores de a (2)
a.get(k[, x]) a[k] if a.has_key(k), else x (4)
a.setdefault(k[, x]) a[k] si a.has_key(k), en caso contrario x (también asigna el valor) (5)

Notas:

(1)
Lanza una excepción KeyError si k no está en la correspondencia.

(2)
Las claves y valores se enumeran en orden indefinido. Si se llama a keys() y a values() sin modificar el diccionario, las listas obtenidas se corresponderán uno a uno. Esto permite la creación de parejas (valor, clave) con map(): "pairs = map(None, a.values(), a.keys())".

(3)
b debe ser del mismo tipo que a.

(4)
Nunca lanza una excepción si k no está en la correspondencia, sino que devuelve x. x es opcional; si no se proporciona x y k no está en la correspondencia, se devuelve None.

(5)
setdefault() es como get(), salvo que si falta k, se devuelve x y se inserta como valor correspondiente a k.


Ver Sobre este documento... para obtener información sobre sugerencias.