Estou tentando imprimir meu programa "banana"
no dicionário. Qual seria a maneira mais simples de fazer isso?
Este é o meu dicionário:
prices = {
"banana" : 4,
"apple" : 2,
"orange" : 1.5,
"pear" : 3
}
python
dictionary
escória
fonte
fonte
to print out banana with a FOR loop, so when I run it, each key would also be printed out
Você quer dizerfor k in prices: print k
? Isso imprimirá todas as chaves no dicionário.Respostas:
Em uma versão Python em que os dicts são realmente ordenados, você pode fazer
Para que os dicts sejam ordenados, você precisa do Python 3.7+ ou 3.6+, se estiver bem em confiar na natureza ordenada tecnicamente de detalhes de implementação dos dicts no Python 3.6.
Para versões anteriores do Python, não há "primeira chave".
fonte
next(iter( my_dict.items() ))
Um dicionário não é indexado, mas é, de alguma forma, ordenado. A seguir, você forneceria a primeira chave existente:
fonte
list(my_dict)[0]
isso, pois ele recuperará a lista de chaves?Atualização: a partir do Python 3.7, a ordem de inserção é mantida, portanto você não precisa de um
OrderedDict
aqui. Você pode usar as abordagens abaixo com umdict
fonte
Python 3.6 e versões anteriores *
Se você está falando de um regular
dict
, então a "primeira chave" não significa nada. As chaves não são ordenadas de nenhuma maneira em que você possa confiar. Se você iterar sobre o seudict
, provavelmente não será"banana"
a primeira coisa que verá.Se você precisar manter as coisas em ordem, precisará usar um
OrderedDict
e não apenas um dicionário comum.Se você queria ver todas as chaves em ordem, poderia fazê-lo iterando através dela
Você pode, alternativamente, colocar todas as chaves em uma lista e depois trabalhar com isso.
Uma maneira mais rápida de obter o primeiro elemento sem criar uma lista seria chamar
next
o iterador. Isso não generaliza muito bem ao tentar obter onth
elemento* O CPython garantiu a ordem de inserção como um detalhe de implementação em 3.6.
fonte
Para o Python 3 abaixo, elimina a sobrecarga da conversão da lista:
fonte
O
dict
tipo é um não ordenado mapeamento ; portanto, não existe um elemento "primeiro".O que você quer é provavelmente
collections.OrderedDict
.fonte
Então, encontrei esta página ao tentar otimizar algo para pegar a única chave em um dicionário de tamanho conhecido 1 e retornar apenas a chave. O processo abaixo foi o mais rápido para todos os dicionários que tentei atingir o tamanho 700.
Tentei 7 abordagens diferentes e descobri que essa era a melhor no meu Macbook 2014 com Python 3.6:
Os resultados da criação de perfil deles foram:
Todas as abordagens que tentei estão aqui:
fonte
Bem, como simples, a resposta de acordo comigo será
first = list(prices)[0]
converter o dicionário em lista produzirá as chaves e selecionaremos a primeira chave da lista.
fonte
next(iter(prices))
, como já sugerido por outras respostas.Como muitos outros apontaram, não há primeiro valor em um dicionário. A classificação neles é arbitrária e você não pode contar com a classificação sempre que acessar o dicionário. No entanto, se você quiser imprimir as chaves, existem algumas maneiras:
Este método usa a atribuição de tupla para acessar a chave e o valor. Isso é útil se você precisar acessar a chave e o valor por algum motivo.
Isso só dá acesso às chaves conforme o
keys()
método implica.fonte
d.keys () [0] para obter a chave individual.
Atualização: - @AlejoBernardin, não sei por que você disse que não funcionou. aqui eu verifiquei e funcionou. importar coleções
fonte
dict.keys()
retorna a em'dict_keys' object
vez de alist
, que não suporta indexação.Use um loop for que abrange todas as chaves em
prices
:Certifique-se de alterar
prices.items()
paraprices.iteritems()
se você estiver usando o Python 2.xfonte
Se você quiser apenas a primeira chave de um dicionário, use o que muitos sugeriram antes
No entanto, se você quiser o primeiro e manter o restante como uma lista, poderá usar o operador de desempacotamento de valores
O mesmo se aplica aos valores, substituindo
prices
porprices.values()
e para chave e valor que você pode até usar atribuição de descompactaçãofonte
A maneira mais fácil é:
mas algumas vezes você deve ter mais cuidado e garantir que sua entidade seja uma lista valiosa para:
fonte
TypeError: 'dict_keys' object is not subscriptable
, pelo menos com Python 3.8