Dicionário com vários valores em Python

Hemank Mehtani 30 janeiro 2023
  1. Use uma função definida pelo usuário para adicionar vários valores a uma chave em um dicionário
  2. Use o módulo defaultdict para adicionar vários valores a uma chave em um dicionário
  3. Use o método setdefault() para adicionar vários valores a uma chave específica em um dicionário
Dicionário com vários valores em Python

Um dicionário em Python constitui um grupo de elementos na forma de pares chave-valor. Normalmente, temos valores únicos para uma chave em um dicionário.

No entanto, podemos ter os valores das chaves como uma coleção, como uma lista. Dessa forma, podemos ter vários elementos no dicionário para uma chave específica.

Por exemplo,

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

Produção:

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

Este tutorial discutirá diferentes métodos para anexar vários valores como uma lista em um dicionário em Python.

Use uma função definida pelo usuário para adicionar vários valores a uma chave em um dicionário

Podemos criar uma função para anexar pares de valores-chave em um dicionário, com o valor sendo uma lista.

Por exemplo,

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)

Produção:

{'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]}

Observe que, no código acima, criamos uma função dict1 com sample_dict, key e list_of_values como parâmetros dentro da função. A função extend() acrescentará uma lista como o valor de uma chave no dicionário.

Use o módulo defaultdict para adicionar vários valores a uma chave em um dicionário

defaultdict é uma parte do módulo de coleções. É também uma subclasse da classe dict que retorna objetos semelhantes a um dicionário. Para uma chave que não existe, ele fornecerá um valor padrão.

Tanto defaultdict como dict têm a mesma funcionalidade, exceto que defaultdict nunca levanta um keyerror.

Podemos usá-lo para converter uma coleção de tuplas em um dicionário. Vamos especificar o valor padrão como uma lista. Portanto, sempre que a mesma chave for encontrada, ele acrescentará o valor como uma lista.

Por exemplo,

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)

Produção:

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

Use o método setdefault() para adicionar vários valores a uma chave específica em um dicionário

O método setdefault() é usado para definir os valores padrão da chave. Quando a chave está presente, ela retorna algum valor. Caso contrário, ele insere a chave com um valor padrão. O valor padrão da chave é nenhum.

Vamos anexar a lista como valores para chaves usando este método.

Por exemplo,

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)

Produção:

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

Artigo relacionado - Python Dictionary