Python usa dict y set

1.dicto

Python tiene un diccionario incorporado: se admite dict. El nombre completo de dict es diccionario, que también se llama mapa en otros idiomas. Utiliza almacenamiento de valores clave y tiene una velocidad de búsqueda extremadamente rápida.

Por ejemplo, suponga que desea encontrar las calificaciones correspondientes en función de los nombres de sus compañeros de clase. Si utiliza una lista para implementarla, necesita dos listas:

names = ['Michael', 'Bob', 'Tracy']
scores = [95, 75, 85]

Dado un nombre, para encontrar la puntuación correspondiente, primero debe encontrar la posición correspondiente en los nombres y luego recuperar la puntuación correspondiente de las puntuaciones. Cuanto más larga sea la lista, más tiempo llevará.

Si se implementa con dict, solo se necesita una tabla de comparación "nombre" - "puntuación", y los resultados se buscan directamente según el nombre. No importa qué tan grande sea la tabla, la velocidad de búsqueda no disminuirá. Escribe un dictado en Python de la siguiente manera:

>>> d = {
    
    'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95

¿Por qué la búsqueda de dict es tan rápida? Porque el principio de realización de dict es el mismo que el de buscar en un diccionario. Suponiendo que el diccionario contiene 10,000 caracteres chinos, necesitamos buscar una determinada palabra. Una forma es volver el diccionario desde la primera página hasta encontrar la palabra que queremos. Este método es encontrar el elemento en la lista. Cuanto mayor sea la lista, más lenta será la búsqueda.

El segundo método es buscar primero el número de página correspondiente a la palabra en la tabla de índice del diccionario (como la tabla de radicales), y luego ir directamente a la página para encontrar la palabra. Independientemente de la palabra que se busque, la velocidad de búsqueda es muy rápida y no se ralentizará a medida que aumente el tamaño del diccionario.

dict es la segunda forma de implementarlo. Dado un nombre, como 'Michael', dict puede calcular directamente el "número de página" de las puntuaciones de almacenamiento correspondientes de Michael internamente, que es la dirección de memoria donde se almacena el número 95, y sacarlo directamente. Entonces la velocidad es muy rápida.

Como puede adivinar, este tipo de método de almacenamiento de clave-valor debe calcular la ubicación de almacenamiento del valor de acuerdo con la clave cuando se ingresa, de modo que el valor se pueda obtener directamente de acuerdo con la clave cuando se toma.

El método de poner datos en el dict, además de la designación durante la inicialización, también se puede poner en la clave:

>>> d['Adam'] = 67
>>> d['Adam']
67

Dado que una clave solo puede corresponder a un valor, si coloca una clave en un valor varias veces, el siguiente valor eliminará el valor anterior:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> d['Jack'] = 90
>>> d['Jack']
90
>>> d['Jack'] = 88
>>> d['Jack']
88

Si la clave no existe, dic reportará un error. Para evitar el error de que la clave no existe, hay dos formas. Una es juzgar si la clave existe por:

>>> 'Thomas' in d
False

El segundo es a través del método get () proporcionado por dict. Si la clave no existe, puede devolver None (nota: el entorno interactivo de Python no muestra el resultado cuando se devuelve None). O el valor que especifique:

>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1

Para eliminar una clave, use el método pop (clave), y el valor correspondiente también se eliminará del dict:

>>> d.pop('Bob')
75
>>> d
{
    
    'Michael': 95, 'Tracy': 85}

Es importante tener en cuenta que el orden de almacenamiento interno del dict no tiene nada que ver con el orden en que se colocan las claves.

Comparado con list, dict tiene las siguientes características:

  • La velocidad de búsqueda e inserción es extremadamente rápida y no se ralentizará a medida que aumente la tecla;
  • Necesita ocupar mucha memoria, mucha pérdida de memoria.

Lo contrario de la lista:

  • El tiempo para buscar e insertar aumenta con el aumento de elementos;
  • Ocupa poco espacio y desperdicia poca memoria.

Por tanto, dict es una forma de intercambiar espacio por tiempo.

dict se puede usar en muchos lugares donde se requiere una búsqueda de alta velocidad. Está casi en todas partes en el código Python. El uso correcto de dict es muy importante. Lo primero que hay que tener en cuenta es que la clave de dict debe ser un objeto inmutable.

Esto se debe a que dict calcula la ubicación de almacenamiento del valor de acuerdo con la clave. Si el resultado de calcular la misma clave cada vez es diferente, el dict es completamente confuso. Este algoritmo para calcular la ubicación por clave se denomina algoritmo hash (Hash).

Para garantizar la exactitud del hash, el objeto clave no se puede cambiar. En Python, las cadenas, los números enteros, etc.son inmutables, por lo que pueden usarse de forma segura como claves. La lista es variable y no se puede utilizar como clave:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> key = [1, 2, 3]
>>> d[key] = 'a list'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

2. Establecer

Set es similar a dict. También es un conjunto de claves, pero no almacena valor. Dado que la clave no se puede repetir, no hay una clave duplicada en el conjunto.

Para crear un conjunto, debe proporcionar una lista como conjunto de entrada:

>>> s = set([1, 2, 3])
>>> s
{
    
    1, 2, 3}

Tenga en cuenta que el parámetro entrante [1, 2, 3] es una lista, y el {1, 2, 3} mostrado solo le dice que hay tres elementos de 1, 2 y 3 dentro del conjunto, y el orden de visualización no indica El conjunto está ordenado. .

Los elementos repetidos se filtran automáticamente en el conjunto:

>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{
    
    1, 2, 3}

Puede agregar elementos al conjunto a través del método add (key), y puede agregarlos repetidamente, pero no tendrá ningún efecto:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> s.add(4)
>>> s
{
    
    1, 2, 3, 4}
>>> s.add(4)
>>> s
{
    
    1, 2, 3, 4}

Los elementos se pueden eliminar mediante el método de eliminación (clave):

>>> s.remove(4)
>>> s
{
    
    1, 2, 3}

El conjunto puede ser considerado como un conjunto de elementos desordenados y no repetitivos en el sentido matemático, por lo que dos conjuntos pueden realizar operaciones como intersección y unión en el sentido matemático:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{
    
    2, 3}
>>> s1 | s2
{
    
    1, 2, 3, 4}

La única diferencia entre set y dict es que el valor correspondiente no se almacena. Sin embargo, el principio de set es el mismo que el de dict. Por lo tanto, el objeto variable no se puede colocar de la misma manera. Debido a que es imposible juzgar si dos objetos variables son iguales, el conjunto no se puede garantizar "No habrá elementos duplicados" en el interior.
Habla de nuevo de objetos inmutables

Como mencionamos anteriormente, str es un objeto inmutable y list es un objeto mutable.

Para objetos mutables, como la lista, si opera en la lista, el contenido de la lista cambiará, como por ejemplo:

>>> a = ['c', 'b', 'a']
>>> a.sort()
>>> a
['a', 'b', 'c']

Y para objetos inmutables, como str, realice operaciones en str:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> a = 'abc'
>>> a.replace('a', 'A')
'Abc'
>>> a
'abc'

Aunque la cadena tiene un método replace (), cambia'Abc ', pero la variable a sigue siendo'abc' al final, ¿cómo debemos entenderlo?

Primero cambiemos el código a lo siguiente:

>>> a = 'abc'
>>> b = a.replace('a', 'A')
>>> b
'Abc'
>>> a
'abc'

¡Siempre tenga en cuenta que a es una variable y 'abc' es un objeto de cadena! A veces, solemos decir que el contenido del objeto a es 'abc', pero en realidad significa que a sí mismo es una variable y que el contenido del objeto al que apunta es 'abc'. Por lo tanto, para un objeto inmutable, llame al objeto Cualquier método propio no cambiará el contenido del objeto en sí. En cambio, estos métodos crean un nuevo objeto y lo devuelven, asegurando así que el objeto inmutable en sí mismo sea siempre inmutable.

Supongo que te gusta

Origin blog.csdn.net/sinat_38682860/article/details/109103603
Recomendado
Clasificación