Accès à la valeur du dictionnaire par index en python

j'aimerais obtenir la valeur par l'index des clés à partir d'un dictionnaire Python. Est-il possible d'obtenir en quelque chose comme cela?

dic = {}
value_at_index = dic.ElementAt(index)

index est un entier

P.S. poser des questions signifie un manque de compréhension, surtout si c'est un nouveau langage, alors à quoi sert le vote négatif, les amis? :( ElementAt est largement utilisé en C # Linq

19
demandé sur tashuhka 2013-02-27 18:41:57

3 réponses

les dictionnaires Python Standard ne sont pas Classés par nature, donc ce que vous demandez n'a pas vraiment de sens.

si vous savez vraiment, vraiment ce que vous faites, utilisez

value_at_index = dic.values()[index]

gardez à l'esprit que l'ajout ou la suppression d'un élément peut potentiellement modifier l'index de tous les autres éléments.

21
répondu NPE 2013-02-27 14:43:56

si vous voulez vraiment juste une valeur aléatoire de la gamme de clés disponibles, utilisez random.choice sur les valeurs du dictionnaire (converties en liste, si Python 3).

>>> from random import choice
>>> d = {1: 'a', 2: 'b', 3: 'c'}
>>>> choice(list(d.values()))
4
répondu MikeRand 2013-02-27 22:03:40

Alors que vous pouvez le faire

value = d.values()[index]

Il devrait être plus rapide à faire

value = next( v for i, v in enumerate(d.itervalues()) if i == index )

edit: je viens de le chronométrer en utilisant un dict de Len 100,000,000 vérifiant l'index à la toute fin, et la version 1st/values() a pris 169 secondes alors que la version 2nd/next() a pris 32 secondes.

3
répondu user2426679 2015-07-24 22:27:31