Gostaria de imprimir uma chave de dicionário Python específica:
mydic = {}
mydic['key_name'] = 'value_name'
Agora posso verificar se mydic.has_key('key_name')
, mas o que eu gostaria de fazer é imprimir o nome da chave 'key_name'
. É claro que eu poderia usar mydic.items()
, mas não quero todas as chaves listadas, apenas uma chave específica. Por exemplo, eu esperaria algo assim (em pseudo-código):
print "the key name is", mydic['key_name'].name_the_key(), "and its value is", mydic['key_name']
Existe algum name_the_key()
método para imprimir um nome de chave?
Edit:
OK, muito obrigado por suas reações! :) Sei que minha pergunta não é bem formulada e trivial. Fiquei confuso porque percebi key_name e mydic['key_name']
são duas coisas diferentes e achei incorreto imprimir key_name
fora do contexto do dicionário. Mas na verdade eu posso simplesmente usar o 'nome_da_chave' para me referir à chave! :)
fonte
Respostas:
Um dicionário possui, por definição, um número arbitrário de chaves. Não existe "a chave". Você tem o
keys()
método, que fornece um pythonlist
de todas as chaves, e oiteritems()
método, que retorna pares de valores-chave;Versão Python 3:
Então você tem um controle sobre as teclas, mas elas realmente significam sentido se acopladas a um valor. Espero ter entendido sua pergunta.
fonte
.iteritems()
não é mais suportado ....items()
. Eu adicionei um exemplo.items()
retorna uma lista no python 2.x.Além disso, você pode usar ....
fonte
Hmm, acho que o que você pode querer fazer é imprimir todas as chaves do dicionário e seus respectivos valores?
Nesse caso, você deseja o seguinte:
Certifique-se de usar + 'em vez de' também. A vírgula colocará cada um desses itens em uma linha separada, eu acho, onde o plus colocará na mesma linha.
fonte
"is"
ekey
etc. Se você usar,+
precisará colocar o preenchimento extra nas cordas. Também chave e valor não são necessariamente corda, caso em que a vírgula vai usar str (key) e str (valor), enquanto que+
causará um erroNota: No Python 3, dic.iteritems () foi renomeado como dic.items ()
fonte
O nome da chave 'key_name' é key_name, portanto,
print 'key_name'
ou qualquer variável que você tenha representando.fonte
No Python 3:
fonte
Como todos estamos tentando adivinhar o que "imprimir um nome de chave" pode significar, vou tentar. Talvez você queira uma função que retire um valor do dicionário e encontre a chave correspondente? Uma pesquisa inversa?
Observe que muitas chaves podem ter o mesmo valor; portanto, essa função retornará alguma chave com o valor, talvez não o que você pretendia.
Se você precisar fazer isso com frequência, faria sentido construir o dicionário reverso:
fonte
iteritems
paraitems
, como mostrado originalmente, esta resposta retornará apenas a primeira tecla - se houver várias correspondências. Para resolver isso, crie uma lista em branco antes defor loop
(values_list = []
) e, em seguida, adicione chaves a esta lista (values_list.append(k)
), noif
loop. Por último, mova a declaração de retorno (return values_list
) para fora dofor
loop.Ou você pode fazer dessa maneira:
fonte
Edit: Atualizado para as strings f do python 3 ...
fonte
Certifique-se de fazer
fonte
O que há de errado em usar
'key_name'
, mesmo que seja uma variável?fonte
fonte
fonte
Provavelmente, a maneira mais rápida de recuperar apenas o nome da chave:
Resultado:
Converte o
dictionary
em umlist
e lista o primeiro elemento que é o todo. Emdict
seguida, lista o primeiro valor desse elemento que é:key_name
fonte
Eu procurei essa pergunta, porque queria saber como recuperar o nome da "chave" se meu dicionário tivesse apenas uma entrada. No meu caso, a chave era desconhecida para mim e poderia haver várias coisas. Aqui está o que eu vim com:
fonte
Tente o seguinte:
fonte
fonte
Se você deseja obter a chave de um único valor, o seguinte ajudaria:
De maneira pitônica:
fonte
Estou adicionando esta resposta como uma das outras respostas aqui ( https://stackoverflow.com/a/5905752/1904943 ) está datada (Python 2;
iteritems
) e o código apresentado - se atualizado para Python 3 de acordo com a sugestão solução alternativa em um comentário para essa resposta - silenciosamente falha ao retornar todos os dados relevantes.fundo
Eu tenho alguns dados metabólicos, representados em um gráfico (nós, arestas, ...). Em uma representação de dicionário desses dados, as chaves são do formato
(604, 1037, 0)
(representando os nós de origem e de destino e o tipo de borda), com valores do formato5.3.1.9
(representando os códigos enzimáticos da CE).Encontre chaves para valores fornecidos
O código a seguir localiza minhas chaves corretamente, com valores:
enquanto esse código retorna apenas as primeiras (possivelmente de várias correspondências):
O último código, atualizado ingenuamente substituindo
iteritems
poritems
, falha ao retornar(604, 3936, 0), (1037, 3936, 0
.fonte
Para acessar os dados, você precisará fazer o seguinte:
Ou, para acessar o valor, basta chamá-lo na chave:
foo[bar]
fonte