Objetivo: mostrar cómo agregar y eliminar elementos de un diccionario en Python.
En la anterior entrega explicamos el concepto de diccionario en Python y vimos el modo de crearlos. Hoy presentaremos dos técnicas básicas: la agregación y eliminación de elementos.
Comencemos con la creación de un par de diccionarios de ejemplo sobre los que practicaremos desde el intérprete interactivo:
>>> gazpacho = {}
>>> menda = {'Nombre':'Javier', 'Apellido':'Montero'}
El primero, gazpacho, es un simple diccionario vacío que utilizaremos para almacenar la receta del gazpacho; el otro, menda, recoge algunos datos sobre mi persona. Más adelante veremos que podemos crear estructuras de datos más complejas, basadas en los diccionarios, que podremos emplear para mantener una agenda de nuestros contactos personales y sin necesidad de recurrir a un gestor de bases de datos.
Para agregar un par clave-valor a un diccionario, recurrimos a la siguiente sintaxis:
diccionario[clave] = valor
Probémoslo con gazpacho:
>>> gazpacho['Aceite'] = '300 ml'
Verificamos que gazpacho, que antes estaba vacío, ahora contiene ese par:
>>> gazpacho
{'Aceite': '300 ml'}
Continuemos con la receta secreta:
>>> gazpacho['Vinagre'] = '100 ml'
>>> gazpacho['Pepino'] = 1
>>> gazpacho['Pimiento'] = 1
Veamos cómo evoluciona nuestra creación:
>>> gazpacho
{'Pimiento': 1, 'Aceite': '300 ml', 'Vinagre': '100 ml', 'Pepino': 1}
Observa la salida de esta última instrucción y recuerda lo que dijimos sobre el orden de los diccionarios: no son una estructura ordenada, aunque veremos formas de hacerlos más presentables si lo deseamos.
Añadamos nuevos elemendos al menda:
>>> menda['URL'] = 'http://www.elclubdelautodidacta.es'
>>> menda['Twitter'] = '@pradery'
tras lo cual,
>>> menda
{'URL': 'http://www.elclubdelautodidacta.es', 'Nombre': 'Javier', 'Twitter': '@pradery', 'Apellido': 'Montero'}
Las claves han de ser únicas. Si tratamos de agregar otra ya existente, simplemente el valor nuevo sustituirá al antiguo:
>>> gazpacho['Pimiento'] = 2
>>> menda['URL'] = 'http://elclubdelautodidacta.es/wp/'
Observa cómo los valores correspondientes son actualizados:
>>> gazpacho
{'Pimiento': 2, 'Aceite': '300 ml', 'Vinagre': '100 ml', 'Pepino': 1}
>>> menda
{'URL': 'http://elclubdelautodidacta.es/wp/', 'Nombre': 'Javier', 'Twitter': '@pradery', 'Apellido': 'Montero'}
Para borrar un par clave-valor de un diccionario disponemos de la sentencia del, que emplearemos del siguiente modo:
del diccionario[clave]
Por ejemplo:
>>> del gazpacho['Aceite']
>>> gazpacho
{'Pimiento': 2, 'Vinagre': '100 ml', 'Pepino': 1}
>>> del menda['URL']
>>> menda
{'Nombre': 'Javier', 'Twitter': '@pradery', 'Apellido': 'Montero'}
Con del podríamos cargarnos incluso el objeto completo:
>>> del gazpacho
A partir de este momento el gazpacho ha dejado de existir y ha pasado a mejor vida:
>>> gazpacho
Traceback (most recent call last):
File "<pyshell#28>", line 1, in <module>
gazpacho
NameError: name 'gazpacho' is not defined
Y con menda mejor no lo hago, no sea que traiga mala suerte…
Javier Montero Gabarró
El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)
El Club del Autodidacta
Consulta el índice completo de artículos relacionados con Python.
Gracias por tu post. Me ha ahorrado bastante tiempo. 😉
Me alegro de que te haya sido útil. Saludos. 🙂
queria saber si se puede eliminar solo un elemento dentro de una cadena de un diccionario
ejemplo:
diccionario = {hola:mundo, 3:tres,nombre:[luis,arturo,carlos]}
en este caso quiero elimanr carlos, se pude eiminar?
Buentas tardes, Luis:
Hay varias cosas que podrías hacer. Partimos de tu diccionario:
>>> diccionario = { ‘hola’: ‘mundo’, 3 : ‘tres’, ‘nombre’ :[‘luis’ ,’arturo’, ‘carlos’]}
(sé cuidadoso a la hora de escribir los strings, no olvides que deben aparecer entrecomillados)
La primera posibilidad es sustituir la entrada correspondiente del diccionario por el una nueva lista actualizada:
>>> diccionario[‘nombre’] = [‘luis’, ‘arturo’]
>>> diccionario
{‘nombre’: [‘luis’, ‘arturo’], 3: ‘tres’, ‘hola’: ‘mundo’}
Pero podría no ser una solución cómoda si la lista fuera grande.
Lo más elegante sería modificar «in situ» la propia lista. Veamos cómo se hace:
Primero regeneramos el diccionario a su valor inicial
>>> diccionario = { ‘hola’: ‘mundo’, 3 : ‘tres’, ‘nombre’ :[‘luis’ ,’arturo’, ‘carlos’]}
y eliminamos ‘carlos’ in situ:
>>> diccionario[‘nombre’].remove(‘carlos’)
>>> diccionario
{‘nombre’: [‘luis’, ‘arturo’], 3: ‘tres’, ‘hola’: ‘mundo’}
Observa que diccionario[‘nombre’] es una lista. Para eliminar un elemento in situ de la lista hemos usado el método remove de las listas.
Saludos
Si, hay una serie de claves para hacer eso, si mo me equivoco creo que es con pop
https://www.youtube.com/watch?v=UboUIZ7Dn0E&feature=youtu.be
Mira este link para eliminar una llave de un diccionario en python
Muchas Gracias me salvaste!
Un placer. Me alegro de que te haya servido.
Saludos
necesito agregar un valor al diccionario, sin que me modifique o reemplace ningún otro de los valores. como podría hacer eso ?. Cabe aclarar que tengo un diccionario con 12 valores y quiero mandar el numero 13. y utilizando una variable de ingreso y asignándolo a otra variable.
Buenos días, Juan:
Si no quieres que el valor asociado a una determinada clave de un diccionario se modifique tendrás que comprobar de algún modo que esa clave no exista previamente. Puedes recurrir al operador in. Observa este uso simple para comprobar la existencia o no de una clave particular:
Agrega, entonces un simple if que verifique que tu clave no exista previamente.
Saludos
Creo que es con append y poner en corchete la ubicación, busca las claves para hacer cosas en los diccionarios y te saldrán muchas
Buenas, Quisiera poder sumar el numero entero de cada uno de los vendedores dentro de mi Diccionario. Ejemplo:
mi_diccionario = { ‘vendedor1’: 3000, ‘vendedor2’: 5000, ‘vendedor3’: 2000 }
Necesito tener alrededor de 20-30 vendedores y cada uno con enteros diferentes, Como hago para sumar solo el numero entero de cada vendedor?
En este caso deberia de dar 10000
Asi podria ser?
mi_diccionario = { ‘vendedor1’: 3000, ‘vendedor2’: 5000, ‘vendedor3’: 2000, ‘vendedor4’: 7000 }
suma = 0
for i in mi_diccionario.values():
suma += i
print (suma)
Javier, una consulta: es posible agregar mas de un valor a un diccionario? Saludos!
Me referia, mas de un valor a una clave 🙂
Muchas gracias, fácil de entender.
«Y con menda mejor no lo hago, no sea que traiga mala suerte…» JAJAJAJA
Javier:
Disfruto siempre muchisimo con tus documentos. Haces superfácil todo o que tocas. He venido aquí para ver si me conseguia enamorar de los diccionarios (la idea es ver podía simular los struct de C con ellos. Recordclass lo hace perfecto, pero es externo). A mi los dic me resultan verborréicos. Este es el segundo de tus entradas dict. Me voy a toda prisa a disfrutar de las otras dos. Gracias
justo para el uso que pretendo, el número de claves seria fijo y debiera ser predeterminado. fecha{‘dia’:21, ‘mes’:7, ‘anno’:2022
Comando que asigna a una variable la llave cuando en el se coloca el valor