[Conocimientos básicos de Python] 4. Listas y diccionarios

Prefacio

Hasta ahora, hemos dominado 3 tipos de datos: enteros, números de coma flotante y cadenas. En este nivel aprenderemos dos nuevos tipos de datos: listas y diccionarios.

Pero antes de eso, quiero hablarles sobre la relación inextricable entre "computadora" y "datos".

La palabra "computación" está en el nombre de una computadora. Si una computadora se separa de los datos, será como una mujer inteligente que no puede preparar una comida sin arroz. Por tanto, los datos son muy importantes para las computadoras.

En general, las computadoras utilizan los datos de tres maneras:

Insertar descripción de la imagen aquí

El primero: utilice datos directamente, como la declaración print (), que puede imprimir directamente los datos que proporcionamos. Por lo general, lo que ve es lo que obtiene.

# 直接运行即可
# print()会直接把我们提供的数据打印出来

print(3)
print('欢迎来到第4关')

resultado de la operación:

3
欢迎来到第4

El segundo tipo: cálculo y procesamiento de datos, veamos un ejemplo:

# 直接运行即可
# 计算机会先计算/加工 数据,再用print()语句打印

print(3+2*3)
print('欢迎来到'+'第4关')

resultado de la operación:

9
欢迎来到第4

Para estas dos declaraciones impresas, la computadora primero [calcula y procesa los datos] y luego imprime los datos entre corchetes print () en la pantalla.

Veamos el tercer tipo: usar datos para emitir juicios.

# 直接运行即可
# 计算机会使用数据来做判断

a = int(input('请输入你的年龄:'))
#如果输入不了数字,请切换成英文输入法

if a<0:
    print('你还在娘胎里呢。')
elif a == 0:
    print('欢迎来到这个世界。')
elif a < 18:
    print('小小的年纪还不懂什么是爱')
else:
    print('你已经是个成熟的大人了,要学会照顾自己。')

resultado de la operación:

请输入你的年龄:28
你已经是个成熟的大人了,要学会照顾自己。

Se puede ver que la computadora aquí está [usando datos para hacer juicios lógicos]:

Insertar descripción de la imagen aquí
Ahora que tenemos una cierta comprensión de la relación entre [computadora] y [datos], precisamente debido a la importancia de los datos, para los programadores novatos, dominar los principales tipos de datos es una prioridad absoluta.

En este nivel, entraremos en contacto con dos nuevos tipos de datos: listas y diccionarios. Descubrirá que son más avanzados e "inclusivos" que los "enteros, números de coma flotante y cadenas" que hemos aprendido.

¿Por qué dices eso? Para los tipos aprendidos anteriormente, solo se puede guardar un dato por tarea. Si necesitamos utilizar muchos datos, será muy inconveniente.

La función de las listas y los diccionarios es ayudarnos a almacenar grandes cantidades de datos para que las computadoras los lean y operen.

lista

Primero veamos la lista. Para sentir el poder de la lista, juguemos a un juego de rol: ¡a partir de ahora, eres el profesor de una nueva clase!

El primer día, 50 caras nuevas vinieron a la clase. Les pide a los estudiantes que escriban sus nombres en la lista para que puedan ser llamados uno por uno durante la clase.

Si solo podemos usar el conocimiento que hemos aprendido para resolver este problema, debemos asignar el nombre de cada estudiante a un nombre de variable y luego imprimirlo por separado. El código es así:

#快速扫一眼,直接点击运行

student1 = '党志文' 
student2 = '浦欣然'
student3 = '罗鸿朗'
student4 = '姜信然'
student5 = '居俊德'
student6 = '宿鸿福'
student7 = '张成和'
student8 = '林景辉'
student9 = '戴英华'
student10 = '马鸿宝'
student11 = '郑翰音'
student12 = '厉和煦'
student13 = '钟英纵'
student14 = '卢信然'
student15 = '任正真'
student16 = '翟彭勃'
student17 = '蒋华清'
student18 = '双英朗'
student19 = '金文柏'
student20 = '饶永思'
student21 = '堵宏盛'
student22 = '濮嘉澍'
student23 = '戈睿慈'
student24 = '邰子默'
student25 = '于斯年'
student26 = '扈元驹'
student27 = '厍良工'
student28 = '甘锐泽'
student29 = '姚兴怀'
student30 = '殳英杰'
student31 = '吴鸿福'
student32 = '王永年'
student33 = '宫锐泽'
student34 = '黎兴发'
student35 = '朱乐贤'
student36 = '关乐童'
student37 = '养永寿'
student38 = '养承嗣'
student39 = '贾康成'
student40 = '韩修齐'
student41 = '彭凯凯'
student42 = '白天干'
student43 = '瞿学义'
student44 = '那同济'
student45 = '衡星文'
student46 = '公兴怀'
student47 = '宫嘉熙'
student48 = '牧乐邦'
student49 = '温彭祖'
student50 = '桂永怡'
print(student1+'在不在?')
print(student2+'在不在?')
print(student3+'在不在?')
print(student4+'在不在?')
print(student5+'在不在?')
print(student6+'在不在?')
print(student7+'在不在?')
print(student8+'在不在?')
print(student9+'在不在?')
print(student10+'在不在?')
print(student11+'在不在?')
print(student12+'在不在?')
print(student13+'在不在?')
print(student14+'在不在?')
print(student15+'在不在?')
print(student16+'在不在?')
print(student17+'在不在?')
print(student18+'在不在?')
print(student19+'在不在?')
print(student20+'在不在?')
print(student21+'在不在?')
print(student22+'在不在?')
print(student23+'在不在?')
print(student24+'在不在?')
print(student25+'在不在?')
print(student26+'在不在?')
print(student27+'在不在?')
print(student28+'在不在?')
print(student29+'在不在?')
print(student30+'在不在?')
print(student31+'在不在?')
print(student32+'在不在?')
print(student33+'在不在?')
print(student34+'在不在?')
print(student35+'在不在?')
print(student36+'在不在?')
print(student37+'在不在?')
print(student38+'在不在?')
print(student39+'在不在?')
print(student40+'在不在?')
print(student41+'在不在?')
print(student42+'在不在?')
print(student43+'在不在?')
print(student44+'在不在?')
print(student45+'在不在?')
print(student46+'在不在?')
print(student47+'在不在?')
print(student48+'在不在?')
print(student49+'在不在?')
print(student50+'在不在?')

resultado de la operación:

党志文在不在?
浦欣然在不在?
罗鸿朗在不在?
姜信然在不在?
居俊德在不在?
宿鸿福在不在?
张成和在不在?
林景辉在不在?
戴英华在不在?
马鸿宝在不在?
郑翰音在不在?
厉和煦在不在?
钟英纵在不在?
卢信然在不在?
任正真在不在?
翟彭勃在不在?
蒋华清在不在?
双英朗在不在?
金文柏在不在?
饶永思在不在?
堵宏盛在不在?
濮嘉澍在不在?
戈睿慈在不在?
邰子默在不在?
于斯年在不在?
扈元驹在不在?
厍良工在不在?
甘锐泽在不在?
姚兴怀在不在?
殳英杰在不在?
吴鸿福在不在?
王永年在不在?
宫锐泽在不在?
黎兴发在不在?
朱乐贤在不在?
关乐童在不在?
养永寿在不在?
养承嗣在不在?
贾康成在不在?
韩修齐在不在?
彭凯凯在不在?
白天干在不在?
瞿学义在不在?
那同济在不在?
衡星文在不在?
公兴怀在不在?
宫嘉熙在不在?
牧乐邦在不在?
温彭祖在不在?
桂永怡在不在?

Pero sabemos que en el mundo de la programación lo más tabú es el "trabajo repetitivo". Después de escribir estas cien líneas de código, incluso si lo copio y pego para modificarlo, me volveré loco cada minuto.

De hecho, siempre que aprenda listas y bucles (spoiler: los bucles se analizarán en el siguiente nivel, ignórelos por ahora), puede hacerlo con 3 líneas de código.

#直接运行代码即可
students = ['党志文', '浦欣然', '罗鸿朗', '姜信然', '居俊德', '宿鸿福', '张成和', '林景辉', '戴英华', '马鸿宝', '郑翰音', '厉和煦', '钟英纵', '卢信然', '任正真', '翟彭勃', '蒋华清', '双英朗', '金文柏', '饶永思', '堵宏盛', '濮嘉澍', '戈睿慈', '邰子默', '于斯年', '扈元驹', '厍良工', '甘锐泽', '姚兴怀', '殳英杰', '吴鸿福', '王永年', '宫锐泽', '黎兴发', '朱乐贤', '关乐童', '养永寿', '养承嗣', '贾康成', '韩修齐', '彭凯凯', '白天干', '瞿学义', '那同济', '衡星文', '公兴怀', '宫嘉熙', '牧乐邦', '温彭祖', '桂永怡']
for i in students:
    print(i+'在不在?')

resultado de la operación:

党志文在不在?
浦欣然在不在?
罗鸿朗在不在?
姜信然在不在?
居俊德在不在?
宿鸿福在不在?
张成和在不在?
林景辉在不在?
戴英华在不在?
马鸿宝在不在?
郑翰音在不在?
厉和煦在不在?
钟英纵在不在?
卢信然在不在?
任正真在不在?
翟彭勃在不在?
蒋华清在不在?
双英朗在不在?
金文柏在不在?
饶永思在不在?
堵宏盛在不在?
濮嘉澍在不在?
戈睿慈在不在?
邰子默在不在?
于斯年在不在?
扈元驹在不在?
厍良工在不在?
甘锐泽在不在?
姚兴怀在不在?
殳英杰在不在?
吴鸿福在不在?
王永年在不在?
宫锐泽在不在?
黎兴发在不在?
朱乐贤在不在?
关乐童在不在?
养永寿在不在?
养承嗣在不在?
贾康成在不在?
韩修齐在不在?
彭凯凯在不在?
白天干在不在?
瞿学义在不在?
那同济在不在?
衡星文在不在?
公兴怀在不在?
宫嘉熙在不在?
牧乐邦在不在?
温彭祖在不在?
桂永怡在不在?

¿Lo encontré? En la primera línea de código, el lado derecho del número de asignación ya no tiene solo un nombre como una cadena, sino 50 nombres.

Este es el primer tipo de datos nuevo que vamos a conocer: lista. A continuación presentaré el uso de listas desde 4 aspectos.

que es una lista

Primero, echemos un vistazo al formato del código de la lista:
Insertar descripción de la imagen aquí
['Xiao Ming', 'Xiao Hong', 'Xiao Gang'] en la imagen es una lista.

Una lista necesita utilizar corchetes [] para enmarcar los distintos datos que contiene. Cada dato que contiene se denomina "elemento". Cada elemento debe estar separado por comas.

Este es el formato estándar de la lista. Ahora cree una lista llamada lista1. Hay tres elementos en la lista: 'Xiao Ming', 18, 1.70 e imprímala:

Respuesta de referencia:

list1=['小明','18','1.70']
print(list1)

Felicitaciones, ha dominado con éxito la forma estándar de escribir listas y cómo imprimir listas. Además, también ha verificado un punto de conocimiento con código: las listas son muy inclusivas y se pueden incluir todo tipo de datos (enteros/números de coma flotante/cadenas).

Sin embargo, muchas veces solo necesitamos usar un determinado elemento de la lista, por ejemplo, cuando el maestro pasa lista en clase, no dice "todos los estudiantes se ponen de pie y responden esta pregunta".

Entonces, la pregunta es: ¿cómo eliminar un elemento específico de la lista?

Extraer un solo elemento de una lista

Esto implica un nuevo punto de conocimiento: el desplazamiento. Los distintos elementos de la lista, como una fila de estudiantes en un salón de clases, están ordenados, es decir, cada elemento tiene su propio número de posición (es decir, desplazamiento).

Insertar descripción de la imagen aquí

En la imagen de arriba, podemos ver: 1. El desplazamiento comienza desde 0, no 1 como estamos acostumbrados, 2. Agregar corchetes con desplazamiento después del nombre de la lista puede colocar el elemento en la posición correspondiente.

Por lo tanto, podemos indexar la lista por desplazamiento (puede entenderse como posicionamiento de búsqueda) y leer los elementos que necesitamos.

Si quieres llamar a Xiao Ming para responder una pregunta ahora, ¿cómo la escribirías en código? Agregue el siguiente código para imprimir el elemento 'Xiao Ming' usando el desplazamiento de la lista.

students = ['小明','小红','小刚']

Respuesta de referencia:

students = ['小明','小红','小刚']
print(students[0])    

Ahora que sabemos cómo eliminar un elemento de una lista, ¿qué pasa si queremos eliminar varios elementos al mismo tiempo? Entonces, aprendamos cómo eliminar varios elementos de una lista.

Extraer varios elementos de una lista

Esta vez, no te diré directamente los conocimientos que necesitas utilizar, pero quiero que resumas las reglas tú mismo.

Ejecute el siguiente código, compare los resultados finales del código y el terminal e intente encontrar las reglas. Te pondré a prueba más tarde.

Un recordatorio: Los números a la izquierda y a la derecha de lo siguiente se refieren al desplazamiento del elemento en la lista. Recuerde que los desplazamientos (índices) siempre comienzan desde 0.

list2 = [5,6,7,8,9]
print(list2[:])
print(list2[2:])
print(list2[:2])
print(list2[1:3])
print(list2[2:4])

resultado de la operación:

[5, 6, 7, 8, 9]
[7, 8, 9]
[5, 6]
[6, 7]
[7, 8]

La operación anterior de usar dos puntos para interceptar elementos de la lista se llama corte y, como sugiere el nombre, consiste en extraer un determinado fragmento de la lista para su procesamiento. Este método de corte nos permite eliminar varios elementos de la lista.

list2 = [5,6,7,8,9]

print(list2[:])
# 打印出[5,6,7,8,9]
print(list2[2:])
# 打印出[7,8,9]
print(list2[:2])
# 打印出[5,6]
print(list2[1:3])
#打印出[6,7]
print(list2[2:4])    
#打印出[7,8]

De esto podemos concluir:

Primera mitad de la oración: si el lado izquierdo de los dos puntos está vacío, el elemento debe recuperarse desde el desplazamiento de 0; si el lado derecho está vacío, debe recuperarse el último elemento de la lista.
La segunda mitad de la oración: se debe tomar el elemento correspondiente al número en el lado izquierdo de los dos puntos, pero el elemento del lado derecho no se debe mover (puede revisar el código nuevamente).

Ahora pruébelo. Modifique el código y utilice el corte para eliminar los dos elementos Xiaoming y Xiaohong de la lista juntos.

students = ['小明','小红','小刚']

Respuesta de referencia:

students = ['小明','小红','小刚']
print(students[:2])

Además, debemos prestar atención a un detalle: el desplazamiento obtiene los elementos de la lista, mientras que el corte intercepta una determinada parte de la lista, por lo que sigue siendo una lista. Ejecute el siguiente código para echar un vistazo.

students = ['小明','小红','小刚']
print(students[2])
print(students[2:])

resultado de la operación:

小刚
['小刚']

Después de aprender cómo eliminar elementos de una lista, miremos hacia abajo.

Agregar/eliminar elementos a la lista

Una semana más tarde, mientras estabas en clase, el decano de repente recogió a un nuevo estudiante, "Xiao Mei", quien dijo que era un estudiante transferido y que quería unirse a tu clase. En este momento, necesitamos usar la función append () para agregar elementos a la lista, agregar significa agregar o complementar.

Probémoslo a través del código. Ejecute el código y piense en las reglas: (Nota: después de informar un error, puede leer el mensaje de error, luego agregar un signo # al comienzo de la línea 6, comentarlo y ejecutarlo. de nuevo)

# 请运行以下代码:报错后,可读一下报错信息,然后将第6行注释掉再运行。
list3 = [1,2]
list3.append(3)
print(list3)

list3.append(4,5)
list3.append([4,5])
print(list3)

¿Has descubierto el patrón? Interpretemos el mensaje de error y los resultados del código:

Insertar descripción de la imagen aquí
Lo que significa esta oración es: los corchetes después de agregar solo pueden aceptar un parámetro, pero se dan dos, a saber, 4 y 5. Por lo tanto, cuando se usa append() para agregar elementos a la lista, solo se puede agregar un elemento a la vez.

Al mismo tiempo, se puede ver en la operación exitosa de list3.append ([4,5]) en la línea 7:

1. Los elementos de la lista pueden ser cadenas, números, etc., o pueden ser la lista misma (es decir, la lista admite anidamiento) 2. Los
parámetros después de la función agregar solo necesitan satisfacer el número uno (un La lista única también se considerará como un elemento)
3. Los elementos después de agregar se agregarán al final de la lista.

La función agregar no genera una nueva lista, sino que agrega un elemento al final de la lista. Además, la longitud de la lista es variable y la capacidad teórica es ilimitada, por lo que se admite el anidamiento arbitrario.

Ahora, agregue Xiaomei a la lista de estudiantes e imprima la lista. Tenga en cuenta que el formato es nombre de lista.append():

Respuesta de referencia:

students = ['小明','小红','小刚']
students.append('小美')
print(students)

¡Genial! Ahora ya sabes cómo agregar elementos a tu lista.

Es otro nuevo día y recibes una llamada. Xiaohong está enferma y ha pedido permiso. No vendrá a clase hoy. Entonces, desea eliminar a Xiaohong de la lista.

Consejo: debe utilizar la declaración del. Lea primero la explicación de la "declaración del" en la documentación oficial de Python: (Saber leer la documentación oficial también es una habilidad importante en el aprendizaje de programación)

Insertar descripción de la imagen aquí
Complete el siguiente código según el conocimiento de la imagen de arriba, elimine 'Little Red' de la lista e imprímalo: (La sintaxis es: del nombre de la lista [índice del elemento])

students = ['小明','小红','小刚','小美']
print(students)

Respuesta de referencia:

students = ['小明','小红','小刚','小美']
del students[3]
print(students)

De hecho, la declaración del es muy conveniente: puede eliminar uno o varios elementos a la vez (el principio es similar a cortar, tomando la izquierda pero no la derecha).

En este punto, hemos repasado la descripción básica de la lista y es hora de resumir:

Insertar descripción de la imagen aquí
Una vez que los domine y el tipo de datos de la lista, estará listo para comenzar. El seguimiento es seguir acumulando experiencia en ejercicios y proyectos y aprovechar al máximo la lista. A continuación aprenderemos sobre otro tipo de datos.

Tipo de datos: diccionario

Como todos sabemos, la rutina diaria de un docente es publicar y corregir trabajos. En este examen de mitad de período, Xiao Ming, Xiao Hong y Xiao Gang obtuvieron 95, 90 y 90 puntos respectivamente.

Si todavía usamos listas para almacenar datos, necesitamos crear una nueva lista específicamente para contener las puntuaciones y asegurarnos de que estén en el mismo orden que los nombres, lo cual es muy problemático.

Por lo tanto, si existe una correspondencia uno a uno entre dos tipos de datos como nombres y valores numéricos (como puntuaciones, altura, peso, etc.), será más conveniente almacenarlos utilizando el segundo dato. escriba - "diccionario".

¿Qué es el diccionario?

De manera similar, primero echemos un vistazo a cómo se ve un diccionario:
Insertar descripción de la imagen aquí
Mire con atención, los diccionarios y las listas tienen tres cosas en común: 1. Tienen nombres; 2. Usan = para la asignación; 3. Usan comas como separadores entre elementos.

Hay dos diferencias: 1. La capa exterior de la lista son corchetes [] y la capa exterior del diccionario son llaves {};

students = ['小明','小红','小刚']
scores = {
    
    '小明':95,'小红':90,'小刚':90}

2. Los elementos de la lista son autónomos, mientras que los elementos del diccionario están compuestos por pares clave-valor, conectados por dos puntos en inglés. Por ejemplo, 'Xiao Ming': 95, donde llamamos 'Xiao Ming' a la clave y 95 al valor.

La combinación de una clave tan única y el valor correspondiente se llama [par clave-valor]. El diccionario anterior tiene 3 [pares clave-valor]: 'Xiao Ming': 95, 'Xiao Hong': 90, 'Xiao Gang :90

Si no queremos hacer los cálculos verbalmente, podemos usar la función len() para obtener la longitud (número de elementos) de una lista o diccionario y poner el nombre de la lista o diccionario entre paréntesis.

#直接运行代码即可
students = ['小明','小红','小刚']
scores = {
    
    '小明':95,'小红':90,'小刚':90}
print(len(students))
print(len(scores))

resultado de la operación:

3
3

Lo que hay que enfatizar aquí es que las claves del diccionario son únicas, pero los valores son repetibles.

Si declara accidentalmente dos [pares clave-valor] con 'Xiao Ming' como clave, el [par clave-valor] que aparece más tarde sobrescribirá el [par clave-valor] anterior.

# 请你运行下面的代码:
scores = {
    
    '小明': 95, '小红': 90, '小明': 90}
print(scores)

resultado de la operación:

{
    
    '小明': 90, '小红': 90}

Extraer elementos del diccionario

Ahora, intentamos imprimir las calificaciones de Xiao Ming del diccionario. Esto implica la indexación del diccionario. A diferencia de las listas que están indexadas por compensaciones, los diccionarios se basan en claves.

# 请你运行下面的代码:
scores = {
    
    '小明': 95, '小红': 90, '小刚': 90}
print(scores['小明'])

resultado de la operación:

95

Así es como se extrae el valor correspondiente del diccionario. De manera similar a una lista, se usa [], pero debido a que el diccionario no tiene desplazamiento, el nombre de la clave debe escribirse entre corchetes, es decir, el nombre del diccionario [clave del diccionario].

Ahora imprima los resultados de Xiaohong y escriba el código usted mismo para poder dominarlo rápidamente.

Respuesta de referencia:

scores = {
    
    '小明':95,'小红':90,'小刚':90}
print(scores['小红'])    

Ahora también sabes cómo recuperar valores de un diccionario.

Después de que Xiaogang recibió el examen, vino a usted después de clase y le dijo que su puntuación total se calculó incorrectamente y que debería ser de 92 puntos. Echaste un vistazo y descubriste que realmente lo era. Entonces, tachaste 90 en tu libro de calificaciones y lo cambiaste a 92.

Esta operación corresponde a la eliminación y adición del diccionario en el código.

Agregar/eliminar elementos al diccionario

Primero echemos un vistazo a un ejemplo. Ejecute el siguiente código y preste atención a cómo se elimina el diccionario y se agregan pares clave-valor:

# 直接运行下面的代码,留意字典以及新的键值对是如何增加的:

album = {
    
    '周杰伦':'七里香','王力宏':'心中的日月'}
del album['周杰伦']
print(album)

album['周杰伦'] = '十一月的萧邦'
print(album)
print(album['周杰伦'])

resultado de la operación:

{
    
    '王力宏': '心中的日月'}
{
    
    '王力宏': '心中的日月', '周杰伦': '十一月的萧邦'}
十一月的萧邦

Podemos encontrar que el código para eliminar los pares clave-valor en el diccionario es la declaración del nombre del diccionario [clave], y para agregar un nuevo par clave-valor, se usa la declaración de asignación nombre del diccionario [clave] = valor.

Entonces, cambie la puntuación de Xiaogang a 92 puntos. Por cierto, el nuevo Xiaomi también hizo el examen y obtuvo un 85. Realice modificaciones y adiciones al diccionario y luego imprima el diccionario completo.

¿Cómo va? ¿Está hecho? La respuesta de referencia es esta:

scores = {
    
    '小明':95,'小红':90,'小刚':90}
del scores['小刚']
scores['小刚'] = 92
scores['小美'] = 85
print(scores)

está bien. Llegados a este punto, podemos resumir los conocimientos básicos de los diccionarios:

Insertar descripción de la imagen aquí

Similitudes y diferencias entre listas y diccionarios

Tanto las listas como los diccionarios son tipos de datos que pueden almacenar múltiples datos en Python. Tienen muchas cosas en común, pero también hay diferencias que merecen nuestra atención. Así que echemos un vistazo a las diferencias primero.

La diferencia entre listas y diccionarios.

Una diferencia muy importante es que los elementos de la lista tienen su propia "posición" clara, por lo que incluso si parecen ser los mismos elementos, siempre que estén en diferentes posiciones en la lista, son dos elementos diferentes. Echemos un vistazo al código:

# 如果==左右两边相等,值为True,不相等则为False。
print(1 == 1)  
# 1等于1,所以值为True

print(1 == 2)
# 1不等于2,所以为False

students1 = ['小明','小红','小刚']
students2 = ['小刚','小明','小红']
print(students1 == students2)

scores1 = {
    
    '小明':95,'小红':90,'小刚':100}
scores2 = {
    
    '小刚':100,'小明':95,'小红':90}
print(scores1 == scores2)

resultado de la operación:

True
False
False
True

En comparación, los diccionarios son mucho más sencillos y el orden de transferencia no les afecta. Porque los datos de la lista están ordenados, mientras que los datos del diccionario están ordenados al azar.

Esta es también la razón por la que los dos métodos de lectura de datos son diferentes: si la lista está ordenada, se utiliza el posicionamiento compensado; si el diccionario está desordenado, el valor se obtiene mediante una clave única.

Similitudes entre listas y diccionarios

Primero veamos el primer punto común: en listas y diccionarios, si desea modificar elementos, puede usar declaraciones de asignación para completarlo. Echa un vistazo al código:

list1 = ['小明','小红','小刚','小美']
list1[1] = '小蓝'
print(list1)

dict1 = {
    
    '小明':'男'}
dict1['小明'] = '女'
print(dict1)

resultado de la operación:

['小明', '小蓝', '小刚', '小美']
{
    
    '小明': '女'}

Por lo tanto, al modificar la puntuación de Xiaogang anterior, puede usar la declaración de asignación directamente, y la declaración del generalmente se usa para eliminar pares clave-valor que definitivamente son innecesarios.

scores = {
    
    '小明':95,'小红':90,'小刚':90}
#del scores['小刚']
#如果只需要修改键里面的值,可不需要del语句
scores['小刚'] = 92

De hecho, el segundo punto común se ha mencionado un poco antes, es decir, admite el anidamiento arbitrario. Además de los tipos de datos aprendidos antes, las listas se pueden anidar dentro de otras listas y diccionarios, y los diccionarios también se pueden anidar dentro de otros diccionarios y listas.

Veamos primero el primer caso: listas anidadas. Organizaste un grupo de estudio de cuatro personas en tu clase. En este momento, la lista se puede escribir como:

students = [['小明','小红','小刚','小美'],['小强','小兰','小伟','小芳']]

La lista de estudiantes se compone de dos sublistas. Ahora surge una pregunta: ¿Cómo sacamos a Xiaofang?

Tal vez cuentes a Xiaofang como el séptimo elemento de la lista (comenzando desde 0), entonces, ¿no crees que los estudiantes [7] pueden obtener Xiaofang?

Por supuesto, las cosas no son tan simples: cuando extraemos listas/diccionarios anidados de varios niveles, tenemos que extraerlos capa por capa, como pelar una cebolla:

Insertar descripción de la imagen aquí
Ahora que hemos determinado que Xiaofang está en la lista de estudiantes [1], sigamos leyendo.

Insertar descripción de la imagen aquí
Xiaofang es el elemento con desplazamiento 3 en la lista de estudiantes[1], por lo que para eliminar Xiaofang, el código se puede escribir así:

students = [['小明','小红','小刚','小美'],['小强','小兰','小伟','小芳']]
print(students[1][3])

Ahora, usa tu ingenio, saca a Xiaolan de la lista e imprímelo.

Respuesta de referencia:

students = [['小明','小红','小刚','小美'],['小强','小兰','小伟','小芳']]
print(students[1][1])    

A continuación, veamos el segundo caso: diccionario anidado en diccionario.

Es similar a las listas anidadas. Debe eliminarse capa por capa. Por ejemplo, si desea eliminar las calificaciones de Xiaofang, el código se escribe así:

scores = {
    
    
    '第一组':{
    
    '小明':95,'小红':90,'小刚':100,'小美':85},
    '第二组':{
    
    '小强':99,'小兰':89,'小伟':93,'小芳':88}
    }
print(scores['第二组']['小芳'])

Observe atentamente el código anterior y luego intente obtener los resultados de Xiaogang.

Respuesta de referencia:

scores = {
    
    
    '第一组':{
    
    '小明':95,'小红':90,'小刚':100,'小美':85},
    '第二组':{
    
    '小强':99,'小兰':89,'小伟':93,'小芳':88}
    }
print(scores['第一组']['小刚'])

Aumentemos la dificultad nuevamente y veamos cómo las listas y los diccionarios se anidan entre sí. Podemos combinar código y comentarios para verlo.

# 最外层是大括号,所以是字典嵌套列表,先找到字典的键对应的列表,再判断列表中要取出元素的偏移量
students = {
    
    
    '第一组':['小明','小红','小刚','小美'],
    '第二组':['小强','小兰','小伟','小芳']
    }
print(students['第一组'][3])
#取出'第一组'对应列表偏移量为3的元素,即'小美'

# 最外层是中括号,所以是列表嵌套字典,先判断字典是列表的第几个元素,再找出要取出的值相对应的键
scores = [
    {
    
    '小明':95,'小红':90,'小刚':100,'小美':85},
    {
    
    '小强':99,'小兰':89,'小伟':93,'小芳':88}
    ]
print(scores[1]['小强'])
#先定位到列表偏移量为1的元素,即第二个字典,再取出字典里键为'小强'对应的值,即99。

De manera similar, inténtelo usted mismo ahora. Según el siguiente código, 1. Imprima Xiaogang en el diccionario, estudiantes 2. Imprima la puntuación 100 de Xiaogang en la lista de puntuaciones.

Respuesta de referencia:

students = {
    
    
    '第一组':['小明','小红','小刚','小美'],
    '第二组':['小强','小兰','小伟','小芳']
    }
scores = [
    {
    
    '小明':95,'小红':90,'小刚':100,'小美':85},
    {
    
    '小强':99,'小兰':89,'小伟':93,'小芳':88}
    ]
print(students['第一组'][2])
print(scores[0]['小刚'])    

¿Creo que puedes hacerlo con éxito? ¡Aplausos para ti! Felicitaciones por conocer a estos dos nuevos amigos un paso más cerca.

Entonces, la tarea de este nivel se completó con éxito. Recuerda repasar más y hacer ejercicios después de clase, que pueden ayudarte a consolidar mejor y más rápido los conocimientos aprendidos.

En el siguiente nivel, comenzaremos a entrar en contacto con una herramienta muy importante en Python: loop, con la que la computadora puede realizar muchas tareas repetitivas por nosotros. ¡Nos vemos en el siguiente nivel!

Supongo que te gusta

Origin blog.csdn.net/qq_41308872/article/details/132689954
Recomendado
Clasificación