Una "clave" puede ser cualquier objeto de tipo inmutable (puede hacer hashes, es decir, objetos con métodos hash () y eq ()), generalmente cadenas y números, y las claves en el mismo diccionario son únicas. Pero no una lista, porque lista puede cambiar su valor por los métodos de índice, sector, apéndice () y extendido ().
"Valor" puede ser cualquier tipo de datos.
Creación del diccionario de Python (dict)
Un diccionario puede crear un diccionario vacío con dict()
o un par de llaves: d = {}
.Se puede colocar una coma dentro de las llaves para separar varios pares clave-valor. Los pares clave-valor están separados por dos puntos:
In [1]: d1 = {}
In [2]: d2 = dict()
In [3]: d1 == d2
Out[3]: True
In [4]: d3 = {'a': 1, 'b': 2, 'c': 3}
In [5]: d3
Out[5]: {'a': 1, 'b': 2, 'c': 3}
In [6]: d4 = {'a': 1, 'a':2, 'a':3}
In [7]: d4
Out[7]: {'a': 3}
En la inicialización del último ejemplo d4 anterior, las claves son todas 'a'
, por lo que el diccionario resultante tiene solo una clave, y su valor es la última asignación de 3
.
Dict () crea un objeto de diccionario
Cuando dict () no tiene argumentos, se genera un diccionario vacío, que también se puede inicializar pasando parámetros. Hay dos formas de parámetros entrantes:
Una es una lista de datos de tipo de secuencia o tupla, cada elemento de la cual debe contener dos elementos secundarios para satisfacer el par clave-valor;
Uno es el parámetro en la forma nombre = valor.
Vea el ejemplo a continuación:
In [21]: d1
Out[21]: {'a': 1, 'b': 2, 'c': 3}
In [22]: d2 = dict(a=1, b=2, c=3)
In [23]: d2
Out[23]: {'a': 1, 'b': 2, 'c': 3}
Derivación del diccionario (comprensión de dictado)
Al igual que en la lista de comprensión, podemos crear un diccionario con una expresión de bucle for:
In [10]: dd = {x: x*x for x in range(5)}
In [11]: dd
Out[11]: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
La lista no puede ser la clave del diccionario, pero puede hacer valor:
In [12]: l1 = [1,2,3]
In [13]: d = {'a': l1}
In [14]: d = {l1: 'a'}
----------------------
TypeError Traceback (most recent call last)
<ipython-input-14-bcd280c2bff6> in <module>
----> 1 d = {l1: 'a'}
TypeError: unhashable type: 'list'
Diccionario de Python (dict) acceso
(1) Accediendo a su lista de valores por clave puede acceder al elemento a través de su índice. El diccionario accede al valor correspondiente por clave, y la forma es similar a la lista entre corchetes, excepto que el "índice" se reemplaza por "clave". El método es el nombre del objeto de diccionario más el nombre de clave entre corchetes, como: mydict['a']
. Si una clave no está en el objeto del diccionario, el acceso a través de corchetes dará un error:
In [26]: myd = dict(a=1, b=2, c=3)
In [27]: myd
Out[27]: {'a': 1, 'b': 2, 'c': 3}
In [28]: myd['a']
Out[28]: 1
In [29]: myd['e']
------------------
KeyError Traceback (most recent call last)
<ipython-input-29-86b81ed4647a> in <module>
----> 1 myd['e']
KeyError: 'e'
(2) El valor se obtiene al acceder al valor de la clave de acceso get () como parámetro mediante el método de obtención (clave), y devolver el valor si la clave no existe.
In [30]: myd.get('a')
Out[30]: 1
In [31]: print(myd.get('e'))
None
Cambios en el diccionario de Python (dict)
Vea el código de muestra a continuación para obtener más detalles:
In [32]: myd = dict(a=1, b=2, c=3)
In [33]: myd['a'] = 9 # Cambiar el valor de una clave.
In [34]: myd
Out[34]: {'a': 9, 'b': 2, 'c': 3}
In [35]: myd['e'] = 8 # Añadir un nuevo par clave-valor
In [36]: myd
Out[36]: {'a': 9, 'b': 2, 'c': 3, 'e': 8}
In [37]: del myd['e'] # Eliminar una clave y su valor
In [38]: myd
Out[38]: {'a': 9, 'b': 2, 'c': 3}
In [39]: myd.pop('c') # Eliminar una clave y su valor y obtener su valor
Out[39]: 3
In [40]: myd
Out[40]: {'a': 9, 'b': 2}
Funciones incorporadas relacionadas con el diccionario de Python (dict)
Python tiene funciones integradas que se pueden usar para manipular el diccionario. Estas son:
- Len ()
Devuelve la longitud del diccionario, que es el número de claves, también el número de valores y el número de pares clave-valor. La longitud del diccionario vacío es 0.
In [41]: len({'a':1, 'b':2})
Out[41]: 2
In [42]: len({})
Out[42]: 0
- any () y all ()
Similar a la operación de listas, tuplas, pero estas dos funciones verifican las teclas del diccionario.
Any (): Devuelve True siempre que el diccionario tenga una clave que sea True;
All (): devuelve True solo si todas las claves del diccionario son True;
In [45]: any({'': 1, 0: 'abcd', False: 333})
Out[45]: False
In [46]: all({'': 1, 0: 'abcd', False: 333})
Out[46]: False
In [47]: all({'a': 1, 0: 'abcd', False: 333})
Out[47]: False
In [48]: any({'a': 1, 0: 'abcd', False: 333})
Out[48]: True
In [49]: any({})
Out[49]: False
In [50]: all({})
Out[50]: True
Sin embargo, un diccionario vacío es interesante. No tiene claves, pero considera que todas las claves son verdaderas y all({})
devuelven verdadero.
- sorted ()
Al igual que la lista de acciones y la tupla, ordena todas las claves del diccionario como una lista (o tupla).
In [51]: sorted({'a': 1, 'c': 3, 'b': 4})
Out[51]: ['a', 'b', 'c']
En operador
Al igual que las listas, tuplas, in
utiliza para comprobar si una clave está en el diccionario:
In [56]: 'a' in {'a': 1, 'c': 3, 'b': 4}
Out[56]: True
In [57]: '3' in {'a': 1, 'c': 3, 'b': 4}
Out[57]: False
In [58]: '3' not in {'a': 1, 'c': 3, 'b': 4}
Out[58]: True
Atravesando el diccionario:
In [59]: for key in {'a': 1, 'c': 3, 'b': 4}:
...: print(key)
...:
a
c
b
El método incorporado del diccionario de Python (dict):
(1) keys ()
El objeto de vista de la clave de retorno (tipo es: dict_keys). Este objeto de vista puede ver dinámicamente los objetos dentro del diccionario. Cuando se cambia el diccionario, el objeto de vista también cambiará.
En Python 2, la lista se devuelve, ahora es dict_keys.
In [76]: myd = dict(a=1, b=2, c=3)
In [77]: kk = myd.keys()
In [78]: type(kk)
Out[78]: dict_keys
In [79]: for k in kk:
...: print(k)
...:
a
b
c
In [80]: myd['e'] = 9 # Diccionario modificado
In [81]: for k in kk: # No recuperó kk, pero kk ha respondido a los cambios, más e
...: print(k)
...:
a
b
c
e
(2) values ()
El objeto de vista del valor de retorno (valor), dict_values.
(3) items ()
Devuelve el objeto de vista clave-valor: dict_items
In [82]: vv = myd.values()
In [83]: vv
Out[83]: dict_values([1, 2, 3, 9])
In [84]: ii = myd.items()
In [85]: ii
Out[85]: dict_items([('a', 1), ('b', 2), ('c', 3), ('e', 9)])
(4) get (key)
Obtenga el valor correspondiente a la clave, como ya se mencionó anteriormente.
(5) clear ()
Vaciar un diccionario
In [86]: myd.get('a')
Out[86]: 1
In [87]: myd.get('x', 0)
Out[87]: 0
In [88]: myd.clear()
In [89]: myd
Out[89]: {}
(6) copy ()
En Python, cuando se asigna una lista u objeto de diccionario a una variable, es una "copia superficial", es decir, la variable apunta al objeto, el objeto original cambia y el valor de esta variable cambia. La función cop () es una "copia profunda", recreando un nuevo objeto para asignarlo a una variable, y los cambios del objeto original no afectan al nuevo objeto.
In [94]: d1 = {'a':1}
In [95]: d2 = d1 # Copia superficial
In [96]: d3 = d1.copy() # Copia profunda
In [97]: d1['a'] = 2 # Cambiar el diccionario original.
In [98]: d2
Out[98]: {'a': 2} # Copia superficial de d2 también cambia.
In [99]: d3
Out[99]: {'a': 1} # Copia profunda de d3 sigue siendo el valor original
(7) pop (key)
Elimine la clave y devuelva su valor, como ya se mencionó anteriormente.
(8) popitem ()
Devuelve un par de valores clave:
In [105]: myd = dict(a=1, b=2, c=3)
In [106]: myd.popitem()
Out[106]: ('c', 3)
In [107]: myd.popitem()
Out[107]: ('b', 2)
(9) fromkeys ()
Inicialice el diccionario con una secuencia:
In [109]: d = {}
In [110]: d.fromkeys([1,2,3])
Out[110]: {1: None, 2: None, 3: None}
In [111]: d.fromkeys([1,2,3], 0)
Out[111]: {1: 0, 2: 0, 3: 0}
(10) update ()
Use un diccionario para actualizar otro diccionario:
In [113]: d = d.fromkeys([1,2,3], 0)
In [114]: d
Out[114]: {1: 0, 2: 0, 3: 0}
In [115]: d.update({1:10, 2:20})
In [116]: d
Out[116]: {1: 10, 2: 20, 3: 0}
Resumen
Un diccionario es una estructura de datos muy importante en Python y un tipo de datos incorporado en Python. Se utilizará con frecuencia en la programación futura, así que familiarícese con sus diversas operaciones.
Practica
- Familiarizado con las diversas operaciones del diccionario.
- Piense en cómo se puede relacionar el diccionario con qué escenas de su vida diaria.
留言
張貼留言