J'ai un objet -> {0: 0,8, 1: 0.2, 2: 0, 3: 0} p>
Je veux le convertir en une matrice numpue, où les touches sont l'index et les valeurs sont les valeurs du tableau -> [0,8, 0,2, 0, 0] p>
Quel est le moyen le plus rapide et efficace de faire cela? P>
J'utilise une boucle pour la boucle, mais y a-t-il une meilleure façon de le faire? P>
5 Réponses :
Assumer votre dictionnaire est appelé dict code>:
La réponse ci-dessus donne dict_values, mais était dans la bonne direction
la bonne façon de le faire est la suivante: p>
Dictionnaire est intrinsèquement sans commande. Vous auriez besoin de trier vos valeurs en fonction de vos touches (en supposant que vous n'avez pas de clé manquante dans votre dictionnaire):
[0.8, 0.2, 0, 0]
clés code>,
éléments code> et
valeurs code> sont le moyen le plus rapide d'obtenir des "choses" d'une dicte. Sinon, vous devez iTER sur les clés. Une approche générale qui permet d'ignorer des indices et des indices hors commandants:
Une solution si l'entrée DICT n'est pas commandée ou n'a pas de valeurs manquantes:
d = {1:1.1, 2:2.2, 0: 0.8, 4:4.4} sz = 1+max(d.keys()) # or len(d) if you are sure there are no missing values x = np.full(sz, np.nan) x[list(d.keys())] = list(d.values()) x #array([0.8, 1.1, 2.2, nan, 4.4])
Le
d.values () code> Les réponses ci-dessous sont correctes pour votre entrée commandée (en supposant que vous avez py> 3.6 où dict ( Stackoverflow.com/questions/39980323/... ) Gagné de la commande d'insertion). Mais y a-t-il une chance que votre dict soit entré dans un «mauvais» ordre? Par exemple
d = {1: 1,1, 2: 2.2, 0: 0,8} code>