English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Métodos de Dicionário do Python
O método fromkeys() cria um novo dicionário com base na sequência de elementos fornecidos, onde os valores são os fornecidos pelo usuário.
A sintaxe do método fromkeys() é:
dictionary.fromkeys(sequence[, value])
O método fromkeys() aceita dois parâmetros:
sequence -Sequência de elementos usada como chaves do novo dicionário
value (opcional) -Valor definido para cada elemento do dicionário
O método fromkeys() retorna um novo dicionário, que possui a sequência de elementos fornecidos como chaves do dicionário.
Se o parâmetro value for configurado, cada elemento do dicionário recém-criado será configurado com o valor fornecido.
# Chaves de vogais keys = {'a', 'e', 'i', 'o', 'u'} vowels = dict.fromkeys(keys) print(vowels)
Quando o programa é executado, a saída é:
{'a': None, 'u': None, 'o': None, 'e': None, 'i': None}
# Chaves de vogais keys = {'a', 'e', 'i', 'o', 'u'} value = 'vowel' vowels = dict.fromkeys(keys, value) print(vowels)
Quando o programa é executado, a saída é:
{'a': 'vowel', 'u': 'vowel', 'o': 'vowel', 'e': 'vowel', 'i': 'vowel'}
# Chaves de vogais keys = {'a', 'e', 'i', 'o', 'u'} value = [1] vowels = dict.fromkeys(keys, value) print(vowels) # Valor atualizado value.append(2) print(vowels)
Quando o programa é executado, a saída é:
{'a': [1], 'u': [1], 'o': [1], 'e': [1], 'i': [1}] {'a': [1, 2], 'u': [1, 2], 'o': [1, 2], 'e': [1, 2], 'i': [1, 2}]
Se o valor fornecido é um objeto mutável (seu valor pode ser alterado), comolista,dicionárioSe, então, ao modificar um objeto mutável, cada elemento da sequência também é atualizado.
Isso ocorre porque, para cada elemento, é atribuída uma referência ao mesmo objeto (apontando para o mesmo objeto na memória).
Para evitar esse problema, usamos compreensão de dicionário.
# Chaves de vogais keys = {'a', 'e', 'i', 'o', 'u'} value = [1] vowels = { key: list(value) for key in keys } # Você também pode usar { key: value[:] for key in keys } print(vowels) # Valor atualizado value.append(2) print(vowels)
Quando o programa é executado, a saída é:
{'a': [1], 'u': [1], 'o': [1], 'e': [1], 'i': [1}] {'a': [1], 'u': [1], 'o': [1], 'e': [1], 'i': [1}]
Aqui, para cada chave em keys, cria-se uma nova lista a partir de value e a atribui a ela.
Basicamente, o valor não é atribuído ao elemento, mas cria uma nova lista a partir dele e a atribui a cada elemento do dicionário.