Diccionario con varios valores en Python

Hemank Mehtani 30 enero 2023
  1. Utilice una función definida por el usuario para agregar varios valores a una clave en un diccionario
  2. Utilice el módulo defaultdict para agregar varios valores a una clave en un diccionario
  3. Utilice el método setdefault() para agregar varios valores a una clave específica en un diccionario
Diccionario con varios valores en Python

Un diccionario en Python constituye un grupo de elementos en forma de pares clave-valor. Por lo general, tenemos valores únicos para una clave en un diccionario.

Sin embargo, podemos tener los valores de las claves como una colección, como una lista. De esta forma, podemos tener varios elementos en el diccionario para una clave específica.

Por ejemplo,

d = {"a": [1, 2], "b": [2, 3], "c": [4, 5]}
print(d)

Producción :

{'a': [1, 2], 'b': [2, 3], 'c': [4, 5]}

Este tutorial discutirá diferentes métodos para agregar múltiples valores como una lista en un diccionario en Python.

Utilice una función definida por el usuario para agregar varios valores a una clave en un diccionario

Podemos crear una función para agregar pares clave-valor en un diccionario, siendo el valor una lista.

Por ejemplo,

def dict1(sample_dict, key, list_of_values):
    if key not in sample_dict:
        sample_dict[key] = list()
    sample_dict[key].extend(list_of_values)
    return sample_dict


word_freq = {
    "example": [1, 3, 4, 8, 10],
    "for": [3, 10, 15, 7, 9],
    "this": [5, 3, 7, 8, 1],
    "tutorial": [2, 3, 5, 6, 11],
    "python": [10, 3, 9, 8, 12],
}
word_freq = dict1(word_freq, "tutorial", [20, 21, 22])
print(word_freq)

Producción :

{'example': [1, 3, 4, 8, 10], 'for': [3, 10, 15, 7, 9], 'this': [5, 3, 7, 8, 1], 'tutorial': [2, 3, 5, 6, 11, 20, 21, 22], 'python': [10, 3, 9, 8, 12]}

Tenga en cuenta que, en el código anterior, hemos creado una función dict1 con sample_dict, key y list_of_values como parámetros dentro de la función. La función extend() agregará una lista como valor para una clave en el diccionario.

Utilice el módulo defaultdict para agregar varios valores a una clave en un diccionario

defaultdict es parte del módulo de colecciones. También es una subclase de la clase dict que devuelve objetos similares a los de un diccionario. Para una clave que no existe, dará un valor predeterminado.

Tanto defaultdict como dict tienen la misma funcionalidad excepto que defaultdict nunca genera un keyerror.

Podemos usarlo para convertir una colección de tuplas en un diccionario. Especificaremos el valor predeterminado como una lista. Entonces, siempre que se encuentre la misma clave, agregará el valor como una lista.

Por ejemplo,

from collections import defaultdict

s = [("rome", 1), ("paris", 2), ("newyork", 3), ("paris", 4), ("delhi", 1)]
d = defaultdict(list)
for k, v in s:
    d[k].append(v)
sorted(d.items())
print(d)

Producción :

defaultdict(<class 'list'>,
            {'rome': [1],
             'paris': [2, 4], 
             'newyork': [3],
             'delhi': [1]
            }) 

Utilice el método setdefault() para agregar varios valores a una clave específica en un diccionario

El método setdefault() se utiliza para establecer valores predeterminados para la clave. Cuando la clave está presente, devuelve algún valor. De lo contrario, inserta la clave con un valor predeterminado. El valor predeterminado de la clave es ninguno.

Agregaremos la lista como valores para las claves usando este método.

Por ejemplo,

s = [("rome", 1), ("paris", 2), ("newyork", 3), ("paris", 4), ("delhi", 1)]
data_dict = {}
for x in s:
    data_dict.setdefault(x[0], []).append(x[1])
print(data_dict)

Producción :

{'rome': [1], 'paris': [2, 4], 'newyork': [3], 'delhi': [1]}

Artículo relacionado - Python Dictionary