Dicionário com vários valores em Python
- Use uma função definida pelo usuário para adicionar vários valores a uma chave em um dicionário
-
Use o módulo
defaultdict
para adicionar vários valores a uma chave em um dicionário -
Use o método
setdefault()
para adicionar vários valores a uma chave específica em um dicionário
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]}