Quero alterar a chave de uma entrada em um dicionário Python.
Existe uma maneira simples de fazer isso?
python
dictionary
sequence
user469652
fonte
fonte
Respostas:
Facilmente feito em 2 etapas:
Ou em uma etapa:
que aumentará
KeyError
se nãodictionary[old_key]
for definido. Observe que isso será excluídodictionary[old_key]
.fonte
dict[new_value] = dict.pop(old_value, some_default_value)
para evitar queold_key
será diferente da posição denew_key
.se você deseja alterar todas as chaves:
se você quiser alterar uma tecla: você pode seguir qualquer uma das sugestões acima.
fonte
{ d1[key] : value for key, value in d.items() }
pop'n'fresh
fonte
No python 2.7 e superior, você pode usar a compreensão do dicionário: Este é um exemplo que encontrei ao ler um CSV usando um DictReader. O usuário havia sufixado todos os nomes de coluna com ':'
ori_dict = {'key1:' : 1, 'key2:' : 2, 'key3:' : 3}
para se livrar do ':' à direita nas chaves:
corrected_dict = { k.replace(':', ''): v for k, v in ori_dict.items() }
fonte
Como as chaves são o que os dicionários usam para pesquisar valores, você não pode realmente alterá-los. O mais próximo que você pode fazer é salvar o valor associado à chave antiga, excluí-la e adicionar uma nova entrada com a chave de substituição e o valor salvo. Várias das outras respostas ilustram maneiras diferentes de conseguir isso.
fonte
Se você tem um ditado complexo, significa que há um ditado ou lista dentro do ditado:
fonte
Não há maneira direta de fazer isso, mas você pode excluir, depois atribuir
ou faça alterações de chave em massa:
fonte
d = { changeKey(k): v for k, v in d.items()}
Para converter todas as chaves no dicionário
Suponha que este seja o seu dicionário:
Para converter todos os traços em sublinhados na chave do dicionário de exemplo:
fonte
suponha que desejamos mudar as chaves para os elementos da lista p = ['a', 'b']. o seguinte código fará:
e chegamos
fonte
Você pode associar o mesmo valor a muitas chaves ou apenas remover uma chave e adicionar novamente uma nova chave com o mesmo valor.
Por exemplo, se você tiver chaves-> valores:
não há motivo para você não poder adicionar
purple->2
ou removerred->1
e adicionarorange->1
fonte
Em caso de alteração de todas as teclas de uma só vez. Aqui estou mostrando as chaves.
fonte
Eu não vi essa resposta exata:
Você pode até fazer isso para atribuir objetos. Transforme-os em um dicionário, fazendo o seguinte:
Em seguida, você pode manipular os atributos do objeto como faria em um dicionário:
fonte