J'essaie d'obtenir mon programme à imprimer à "banana"
partir du dictionnaire. Quelle serait la façon la plus simple de procéder?
Voici mon dictionnaire:
prices = {
"banana" : 4,
"apple" : 2,
"orange" : 1.5,
"pear" : 3
}
python
dictionary
slagoy
la source
la source
to print out banana with a FOR loop, so when I run it, each key would also be printed out
Tu veux direfor k in prices: print k
? Cela imprimera toutes les clés du dictionnaire.Réponses:
Sur une version Python où les dictés sont réellement commandés, vous pouvez faire
Pour que les dicts soient commandés, vous avez besoin de Python 3.7+, ou 3.6+ si vous êtes d'accord pour vous fier à la nature ordonnée techniquement et en détail de l'implémentation des dicts sur Python 3.6.
Pour les versions antérieures de Python, il n'y a pas de "première clé".
la source
next(iter( my_dict.items() ))
Un dictionnaire n'est pas indexé, mais il est en quelque sorte ordonné. Ce qui suit vous donnerait la première clé existante:
la source
list(my_dict)[0]
car il récupérera de toute façon la liste des clés?Mise à jour: à partir de Python 3.7, l'ordre d'insertion est maintenu, vous n'avez donc pas besoin d'un
OrderedDict
ici. Vous pouvez utiliser les approches ci-dessous avec undict
la source
Python 3.6 et versions antérieures *
Si vous parlez d'un habitué
dict
, la "première clé" ne veut rien dire. Les clés ne sont pas commandées de quelque manière que ce soit sur laquelle vous pouvez compter. Si vous parcourez votre,dict
vous n'obtiendrez probablement pas"banana"
la première chose que vous voyez.Si vous devez garder les choses en ordre, vous devez utiliser un
OrderedDict
dictionnaire et pas seulement un simple.Si vous vouliez ensuite voir toutes les clés pour pouvoir le faire en les itérant
Vous pouvez également mettre toutes les clés dans une liste, puis travailler avec
Un moyen plus rapide d'obtenir le premier élément sans créer de liste serait d'appeler
next
l'itérateur. Cela ne se généralise pas bien quand on essaie d'obtenir l'nth
élément* CPython avait garanti l'ordre d'insertion comme détail d'implémentation dans 3.6.
la source
Pour Python 3 ci-dessous, élimine la surcharge de conversion de liste:
la source
Le
dict
type est un mappage non ordonné , il n'y a donc pas de "premier" élément.Ce que vous voulez, c'est probablement
collections.OrderedDict
.la source
J'ai donc trouvé cette page en essayant d'optimiser une chose pour prendre la seule clé dans un dictionnaire de longueur connue 1 et ne retourner que la clé. Le processus ci-dessous a été le plus rapide pour tous les dictionnaires que j'ai essayés jusqu'à la taille 700.
J'ai essayé 7 approches différentes et j'ai trouvé que celle-ci était la meilleure sur mon Macbook 2014 avec Python 3.6:
Les résultats du profilage étaient:
Toutes les approches que j'ai essayées sont ici:
la source
Et bien aussi simple, la réponse selon moi sera
first = list(prices)[0]
la conversion du dictionnaire en liste produira les clés et nous sélectionnerons la première clé de la liste.
la source
next(iter(prices))
, comme déjà suggéré par d'autres réponses.Comme beaucoup d'autres l'ont souligné, il n'y a pas de première valeur dans un dictionnaire. Leur tri est arbitraire et vous ne pouvez pas compter sur le même tri chaque fois que vous accédez au dictionnaire. Cependant, si vous souhaitez imprimer les clés de plusieurs manières:
Cette méthode utilise l'affectation de tuple pour accéder à la clé et à la valeur. C'est pratique si vous devez accéder à la fois à la clé et à la valeur pour une raison quelconque.
Cela ne donne accès aux clés que la
keys()
méthode implique.la source
d.keys () [0] pour obtenir la clé individuelle.
Mise à jour: - @AlejoBernardin, je ne sais pas pourquoi vous avez dit que cela ne fonctionnait pas. ici j'ai vérifié et cela a fonctionné. importer des collections
la source
dict.keys()
retourne a'dict_keys' object
au lieu de alist
, qui ne prend pas en charge l'indexation.Utilisez une boucle for qui couvre toutes les clés dans
prices
:Assurez - vous que vous changez
prices.items()
deprices.iteritems()
si vous utilisez Python 2.xla source
Si vous voulez juste la première clé d'un dictionnaire, vous devez utiliser ce que beaucoup ont suggéré auparavant
Cependant, si vous voulez le premier et garder le reste sous forme de liste, vous pouvez utiliser l'opérateur de décompression des valeurs
La même chose s'applique aux valeurs en remplaçant
prices
parprices.values()
et pour la clé et la valeur, vous pouvez même utiliser l'affectation de déballagela source
le moyen le plus simple est:
mais parfois vous devez être plus prudent et vous assurer que votre entité est une liste précieuse donc:
la source
TypeError: 'dict_keys' object is not subscriptable
, au moins avec Python 3.8