-1
votes

Dictionnaire de commande avec les coordonnées x et y à Python

J'ai ce problème.

J'ai besoin de commander ces points 1-7 1 (4,2), 2 (3, 5), 3 (1,4), 4 (1,1), 5 (2,2), 6 (1,3), 7 (1,5)

et obtenir ce résultat 4, 6, 3, 5, 2, 1, 7.

 Entrez la description de l'image ici

J'utilise un script Python pour trier avec la référence X et est correct, mais le tri de Y est faux.

J'ai essayé avec trié (dict, clé = itemGetter (1,2))

Quelqu'un peut m'aider s'il vous plaît?


6 commentaires

Quel est ce (4,2), 2 (3, 5), 3 (1,4), 4 (1,1), 5 (2,2), 6 (1,3), 7 (1 , 5) une liste d'un dictionnaire, veuillez ajouter votre code ou au moins une représentation de Python de votre entrée / sortie.


Pourquoi le 7 viendra-t-il? Cela semble hors de l'ordre.


trié (dicts.values ​​(), touche = itemGetter (1,0)) Trier les valeurs du dictionnaire et non le dictionnaire IT Self, et la commande dans votre exemple est basée exactement sur quoi exactement?


Lit de gauche à droite, de haut en bas, une étape de l'axe des y à l'époque.


Vous voulez dire de haut en bas, de gauche à droite. Pouvez-vous également montrer le code que vous avez essayé?


Ah. Une chose qui pourrait vous faire renverser est; Vous avez votre x, y coordonne les coordonnées en arrière. Dans un système de coordonnées cartésiennes, X vient en premier dans le tuple (x, y). Il devrait donc être 1 (2,4), 2 (5,3), 3 (4,1), 4 (1,1), 5 (2,2), 6 (3,1), 7 (5,1) . Bien que, étant donné que l'axe des Y devrait également monter à partir de l'axe X (pas en bas), cela peut également visser les choses. Devrait-il être 1 (2, -4), 2 (5, -3), 3 (4, -1), 4 (1, -1), 5 (2, -2), 6 (3, -1), 7 (5, -1) ? Ou l'avez-vous inverser pour éviter de traiter avec des négatifs? Cela peut vous fasser du tri python depuis (-1> -4), tandis que (1 <4).


3 Réponses :


2
votes

Essayez ceci: xxx

indexation en python commence à 0. itemGetter (1,0) trie par le deuxième élément puis par le premier élément < / p>


1 commentaires

Cela ne semble pas produire la sortie souhaitée. Pouvez-vous développer et rendre le code plus complet (il peut donc être testé à exécution)?



0
votes

Ceci trie le code basé sur la commande de la première coordonnée du tuple, puis sous-commandant par la deuxième coordonnée du tuple. C'est à dire. Comme alphabétiquement, où "AA", alors "AB", puis "BA", puis "BB". Plus littéral (1,1), (1,2), (2,1), (2,2), etc.

Cela fonctionnera si (et seulement si) la paire de valeur TUPLE associée au n ° 7 est en fait En dehors de votre question (et devrait être entre # 3 et n ° 5.)

Si ce n'est pas le cas, voir mon autre réponse. xxx

sortie: xxx


0 commentaires

0
votes

Depuis que vous recherchez visuellement de haut en bas, puis de gauche à droite, ce code est beaucoup plus simple et fournit le résultat correct. Cela fait fondamentalement l'équivalent d'une analyse visuelle, en vérifiant tous les tuples qui se trouvent à chaque position "y = n", puis triplé des tuples "y = n" basés sur le deuxième numéro (gauche à droite).

Juste pour être plus cohérent avec le système de numéro de cartésien, j'ai converti les points sur le graphique sur les coordonnées (x, y), avec X-positif (croissant à droite) et y-négatif (diminution à leur guise. vers le bas). xxx

ou si vous le souhaitez plus rapidement et plus compact xxx

: xxx


0 commentaires