Estructura de datos de Python: diccionario (dict)

Sugerencia: después de escribir el artículo, la tabla de contenido se puede generar automáticamente. Para obtener información sobre cómo generarla, consulte el documento de ayuda a la derecha.


diccionario

El diccionario es una estructura de datos de Python muy importante. Ya sea que se trate de desarrollo de back-end, rastreador, análisis de datos o inteligencia artificial, se utilizan los métodos y principios del diccionario.

Definición del diccionario

A diferencia de cadenas, listas y tuplas, un diccionario es una colección de mapas mutables y desordenados que contienen una serie de pares "clave: valor".
Los diccionarios son mutables, por lo que se pueden agregar, eliminar y modificar pares clave-valor.
Los diccionarios son colecciones desordenadas de mapas, por lo que los diccionarios no se pueden indexar ni segmentar.

creación de diccionario

Crear con símbolos

Use llaves {} para crear un diccionario, como ejemplo:

>>> d1 = {
    
    'name':'lilei', 'age':20, 'grade':'three'} # 字符串作为键
>>> print(d1)
{
    
    'name': 'lilei', 'age': 20, 'grade': 'three'}

>>> d2 = {
    
    } # 使用{}创建空字典
>>> print(d2)
{
    
    }

>>> d3 = {
    
    (1,2,3):'a', (10001,): 1002} # 使用元组作为键
>>> print(d3)
{
    
    (1, 2, 3): 'a', (10001,): 1002}

>>> d4 = {
    
    100.1:100, 1002:200} # 使用数值型作为键,不能使用0开头的数值作为键,会报错
>>> print(d4)
{
    
    100.1:100, 1002:200}

>>> d5 = {
    
    [1,2,3]:'a', [4,5,6]:[7,8,9]} # 使用列表作为键会报错
>>> print(d5)
Traceback (most recent call last):
  File "\test.py", line 1, in <module>
    d5 = {
    
    [1,2,3]:'a', [4,5,6]:[7,8,9]}
TypeError: unhashable type: 'list'

Darse cuenta:

  • Las claves del diccionario pueden ser de tipos inmutables como cadenas, números, tuplas, etc., y la lista es de tipo mutable y no se puede utilizar como claves del diccionario;
  • El valor del diccionario puede ser de cualquier tipo;
  • Los tipos numéricos no pueden comenzar con 0 cuando se usan como clave de diccionario;
  • Las claves del diccionario no se pueden repetir, si se repiten, sólo se conservan los siguientes pares clave-valor;
  • Los diccionarios almacenan referencias a objetos, no los objetos en sí.

Crear con función

Use la función dict() para convertir otros tipos a diccionarios, los ejemplos son los siguientes:

>>> s1 = [('name', 'lilei'), ('age', 20), ('grade', 'three')] # 使用包含键元组和值元组的列表创建字典
>>> d1 = dict(s1)
>>> print(d1)
{
    
    'name': 'lilei', 'age': 20, 'grade': 'three'}

>>> d2 = dict(name='lilei', age=20, grade='three') # 使用赋值格式的键值对创建字典
>>> print(d2)
{
    
    'name': 'lilei', 'age': 20, 'grade': 'three'}

Obtener elementos del diccionario

Un diccionario es una colección desordenada de mapas, y el diccionario no tiene la función de indexar y dividir. El diccionario obtiene el valor correspondiente por clave, la sintaxis es la siguiente:

dict[key]

La sintaxis de usar una clave para obtener un valor en un diccionario es similar a la de un índice de secuencia, usando [].

Un ejemplo es el siguiente:

>>> d1 = {
    
    'name': 'lilei', 'age': 20, 'grade': 'three'}
>>> print(d1['name'])
lilei
>>> print(d1['age'])
20

elemento de diccionario añadido

1. Use el número de asignación "=" para agregar pares clave-valor al diccionario

La sintaxis es la siguiente:

dict[key] = value

Un ejemplo es el siguiente:

>>> d1 = {
    
    'name': 'lilei', 'age': 20, 'grade': 'three'}
>>> d1['sex'] = 'male' # 'sex'键不存在,为字典添加该键值对
>>> print(d1)
{
    
    'name': 'lilei', 'age': 20, 'grade': 'three', 'sex': 'male'}

Al agregar un par clave-valor a un diccionario, el diccionario determinará si la clave existe en el diccionario. Si no existe, agregue un par clave-valor al diccionario. Si existe, modifique el valor de la clave para un nuevo valor. La razón es que las claves del diccionario no se pueden repetir. .

2. Use el método update() para agregar pares clave-valor

La sintaxis es la siguiente:

dict.update(dict2)

parámetro:

  • dict2: el diccionario que se agregará al dict del diccionario especificado.

Valor de retorno: Sin valor de retorno.

Un ejemplo es el siguiente:

>>> d1 = {
    
    'name': 'lilei', 'age': 20, 'grade': 'three'}
>>> d2 = {
    
    'math':95, 'chinese':92, 'english': 90}
>>> d1.update(d2)
>>> print(d1)
{
    
    'name': 'lilei', 'age': 20, 'grade': 'three', 'math': 95, 'chinese': 92, 'english': 90}

eliminación de elementos de diccionario

1.del extracto borrar

Utilice la instrucción del para eliminar pares clave-valor en el diccionario sin devolver un valor. La sintaxis es la siguiente:

del dict[key]

Un ejemplo es el siguiente:

>>> d1 = {
    
    'name': 'lilei', 'age': 20, 'grade': 'three'}
>>> del d1['name']
>>> print(d1)
{
    
    'age': 20, 'grade': 'three'}

2. El método pop elimina

Elimine la clave del diccionario y devuelva el valor asignado, la sintaxis es la siguiente:

dict.pop(key[,default])

parámetro:

  • tecla: la tecla para borrar
  • predeterminado: si no hay clave, devuelve el valor predeterminado, si no se especifica ningún valor predeterminado, se informará un error.

Un ejemplo es el siguiente:

>>> d1 = {
    
    'name': 'lilei', 'age': 20, 'grade': 'three'}
>>> print(d1.pop('age')) # 返回'age'键对应的值
20
>>> print(d1)
{
    
    'name': 'lilei', 'grade': 'three'}

>>> print(d1.pop('class', None)) # 字典中没有'class'键,返回设置的默认是None
None

3. El método popitem elimina

El método popitem() devuelve y elimina aleatoriamente el último par de clave y valor del diccionario. Si el diccionario ya está vacío, pero se llama a este método, se informa una excepción KeyError. La sintaxis es la siguiente:

dict.popitem()

Un ejemplo es el siguiente:

>>> d1 = {
    
    'name': 'lilei', 'age': 20, 'grade': 'three'}
>>> print(d1.popitem())
('grade', 'three')

Nota: el diccionario no está ordenado. Las claves del diccionario en Python 3.5 y versiones anteriores no están ordenadas (el orden de cada salida es inconsistente). En las versiones posteriores a Python 3.5, el orden de salida de los pares clave-valor del diccionario es fijo. .

modificación de elementos de diccionario

La sintaxis para modificar elementos en un diccionario es la misma que para agregar elementos:

dict[key] = value

Al agregar o modificar un elemento a un diccionario, el diccionario determinará si la clave existe, si existe, modificará el valor de la clave, y si no existe, agregará un par clave-valor, el ejemplo es el siguiente:

>>> d1 = {
    
    'name': 'lilei', 'age': 20, 'grade': 'three'}
>>> d1['age'] = 21 # 'age'键存在,修改该键的值为21
>>> print(d1)
{
    
    'name': 'lilei', 'age': 21, 'grade': 'three', 'sex': 'male'}

Bucle a través de las teclas del diccionario

Los diccionarios son objetos iterables, y puede usar el ciclo for para recorrer los pares clave-valor en el diccionario, pero necesita usar los tres métodos keys(), value() y items() del diccionario, que se usan para devolver claves de diccionario Un objeto de vista de pares de valores. El objeto de vista admite operaciones de iteración. Los ejemplos son los siguientes:

Use el método keys() para recorrer las teclas de un diccionario

>>> d1 = {
    
    'name': 'lilei', 'age': 20, 'grade': 'three'}
>>> print(d1.keys())
dict_keys(['name', 'age', 'grade']) # 视图对象不是列表,不支持索引

# 使用for循环遍历字典的键
>>> for key in d1.keys():
... 	print(key)
name
age
grade

Use el método de valores () para recorrer los valores de un diccionario

>>> d1 = {
    
    'name': 'lilei', 'age': 20, 'grade': 'three'}
>>> print(d1.values())
dict_values(['lilei', 20, 'three'])

# 使用for循环遍历字典的值
>>> for value in d1.values():
... 	print(value)
lilei
20
three

Use el método items() para recorrer los pares clave-valor del diccionario

>>> d1 = {
    
    'name': 'lilei', 'age': 20, 'grade': 'three'}
>>> print(d1.items())
dict_items([('name', 'lilei'), ('age', 20), ('grade', 'three')])

# 使用for循环遍历字典的键值对
>>> for item in d1.items():
... 	print(item) # item是元组
('name', 'lilei')
('age', 20)
('grade', 'three')

# 使用key, value两个变量接收items()返回值
>>> for key, value in d1.items():
... 	print(key, value) 
name lilei
age 20
grade three

función de diccionario

Algunos métodos se proporcionan en el diccionario, y algunos métodos comúnmente utilizados se describen a continuación:

1. Vaciar el diccionario

El método clear() puede eliminar todos los elementos del diccionario. La sintaxis es la siguiente:

dict.clear()

Sin parámetros, sin valor de retorno. Un ejemplo es el siguiente:

>>> d1 = {
    
    'name': 'lilei', 'age': 20, 'grade': 'three'}
>>> d1.clear() # 清空字典的所有元素
>>> print(d1) 
{
    
    }

2. Copia el diccionario

El método copy() puede realizar una copia superficial del diccionario, la sintaxis es la siguiente:

dict.copy()

Sin argumentos, devuelve una copia superficial de un diccionario. Un ejemplo es el siguiente:

>>> d1 = {
    
    'name': 'lilei', 'age': 20, 'grade': 'three'}
>>> d2 = d1.copy()
>>> print(d2)
{
    
    'name': 'lilei', 'age': 20, 'grade': 'three'}

# 使用id()函数测试两个字典的内存地址
>>> print(id(d1))
1886511206528
>>> print(id(d2)) # 两个字典的内存地址完全不同,d2引用了新的字典对象
1886511206720

Nota: la copia superficial solo puede copiar un nivel, si hay varios niveles en el diccionario, otros niveles aún se refieren al mismo objeto.

3. Obtenga el valor de la clave especificada

El método get() puede devolver el valor de la clave especificada, la sintaxis es la siguiente:

dict.get(key, default=None)

parámetro:

  • clave: la clave para buscar en el diccionario.
  • predeterminado: devuelve el valor predeterminado si la clave especificada no existe. Devuelve Ninguno si no se especifica ningún valor predeterminado.

Un ejemplo es el siguiente:

>>> d1 = {
    
    'name': 'lilei', 'age': 20, 'grade': 'three'}
>>> print(d1.get('name')) 
lilei

>>> print(d1.get('class', 'nothing'))
nothing

Nota: El efecto del método get() es el mismo que el del diccionario obteniendo el valor dict[clave] a través de la clave, la diferencia es que usar el método get() no reportará un error si no se encuentra la clave , y usar dict[key] informará un error si no existe tal clave en el diccionario: KeyError.

Los anteriores son los métodos que debe dominar el diccionario.Es muy importante estar familiarizado con los diversos métodos y operaciones para dominar el diccionario.

Supongo que te gusta

Origin blog.csdn.net/shield911/article/details/124110525
Recomendado
Clasificación