En python 2 lors de l'utilisation d'un OrderedDict
j'ai été en mesure d'obtenir les clés dans l'ordre où elles ont été insérées en utilisant simplement la méthode keys
qui a renvoyé une liste. En python 3 cependant:OrderedDict en python 3 - comment obtenir les clés dans l'ordre?
rows = OrderedDict()
rows[0]=[1,2,3]
rows[1]=[1,2,3]
image = [rows[k] for k in rows.keys()[:2]]
Je reçois:
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: 'odict_keys' object is not subscriptable
Je ne peux certainement faire list(rows)[:2]
comme conseillé par exemple here - mais est-ce garanti pour me obtenir les clés de commande? Est-ce la bonne façon?
MISE À JOUR: le python 2 code serait mieux que:
image = [v for v in rows.values()[:2]]
qui bien sûr souffle toujours avec la même erreur sur python 3
Oui, faire 'list (rows)' est la bonne façon d'obtenir les clés dans l'ordre puisque cela utilise '__iter__' et' __next__' dont l'ordre est garanti. Si vous avez seulement besoin des 2 premières clés, vous pourriez envisager quelque chose comme 'itertools.islice (rows, 2)' au lieu de 'list (rows) [: 2]' ... – mgilson
Merci @mgilson - je ne sais pas ce que je ferais être plus rapide - copier une petite liste ou utiliser le module itertools - peut-être essayer une réponse? :) –