O método fromkeys () cria um novo dicionário a partir da sequência de elementos fornecida com um valor fornecido pelo usuário.
A sintaxe do fromkeys()
método é:
dicionário.fromkeys (sequência (, valor))
Parâmetros fromkeys ()
fromkeys()
método leva dois parâmetros:
- sequência - sequência de elementos que devem ser usados como chaves para o novo dicionário
- valor (opcional) - valor que é definido para cada elemento do dicionário
Valor de retorno de fromkeys ()
fromkeys()
método retorna um novo dicionário com a sequência de elementos fornecida como as chaves do dicionário.
Se o argumento do valor for definido, cada elemento do dicionário recém-criado será definido com o valor fornecido.
Exemplo 1: crie um dicionário a partir de uma sequência de chaves
# vowels keys keys = ('a', 'e', 'i', 'o', 'u' ) vowels = dict.fromkeys(keys) print(vowels)
Resultado
('a': Nenhum, 'u': Nenhum, 'o': Nenhum, 'e': Nenhum, 'i': Nenhum)
Exemplo 2: crie um dicionário a partir de uma sequência de chaves com valor
# vowels keys keys = ('a', 'e', 'i', 'o', 'u' ) value = 'vowel' vowels = dict.fromkeys(keys, value) print(vowels)
Resultado
('a': 'vogal', 'u': 'vogal', 'o': 'vogal', 'e': 'vogal', 'i': 'vogal')
Exemplo 3: criar um dicionário a partir da lista de objetos mutáveis
# vowels keys keys = ('a', 'e', 'i', 'o', 'u' ) value = (1) vowels = dict.fromkeys(keys, value) print(vowels) # updating the value value.append(2) print(vowels)
Resultado
('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 valor for um objeto mutável (cujo valor pode ser modificado) como lista, dicionário, etc., quando o objeto mutável é modificado, cada elemento da sequência também é atualizado.
Isso ocorre porque a cada elemento é atribuída uma referência ao mesmo objeto (aponta para o mesmo objeto na memória).
Para evitar esse problema, usamos a compreensão do dicionário.
# vowels keys keys = ('a', 'e', 'i', 'o', 'u' ) value = (1) vowels = ( key : list(value) for key in keys ) # you can also use ( key : value(:) for key in keys ) print(vowels) # updating the value value.append(2) print(vowels)
Resultado
('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 chaves, uma nova lista de valor é criada e atribuída a ela.
Em essência, o valor não é atribuído ao elemento, mas uma nova lista é criada a partir dele, que é então atribuída a cada elemento no dicionário.