J'utilise Python 2.6 et j'ai deux magasins de données. L'interrogation du premier renvoie une liste d'ID de document dans un ordre spécifique. Je consulte tous les documents à la fois dans le deuxième magasin de données en utilisant ces identifiants, ce qui renvoie une liste de dictionnaires (un pour chaque document), mais pas dans le même ordre que la liste originale. J'ai maintenant besoin de re-trier cette liste de dictionnaires de sorte que les documents sont dans l'ordre que leurs identifiants étaient dans la première liste. Quelle est la meilleure façon de faire cela?Liste de tri des dictionnaires selon l'ordre spécifique
Répondre
Le meilleur (et général) solution semble être donnée ici: reordering list of dicts arbitrarily in python
Ne le faites pas. Déplacez votre "liste de dictionnaires (un pour chaque document), mais pas dans le même ordre que la liste originale" dans un dictionnaire.
Ce nouveau dictionnaire de dictionnaires possède la clé correspondante.
Ensuite parcourez votre première liste dans l'ordre et trouvez les éléments du dictionnaire de dictionnaires qui correspondent.
some_list= query_data_store_1()
some_other_list= query_data_store_2(some_list)
dict_of_dict = dict((d['key'], d) for d in some_other_list)
for item in some_list:
other_item = dict_of_dict[ item['key'] ]
# Now you have item from the first list matching item from the second list.
# And it's in order by the first list.
dict_of_dict = dict (d ['id'], d pour d dans some_other_list) – kurosch
Vous pouvez construire un ids de cartographie dictionnaire séparés à des positions et l'utiliser pour commander les documents:
ids = ...
positions = {}
for pos, id in enumerate(ids):
positions[id] = pos
docs = ...
docs.sort(key=lambda doc: positions[doc['id']])
- 1. Listes de tri de la liste des dictionnaires
- 2. parcourir la liste des dictionnaires
- 3. iphone - tri d'un tableau de dictionnaires
- 4. vecteurs de tri selon la taille()
- 5. catalogue une liste de dictionnaires
- 6. Tri d'une liste hétérogène d'objets en Python
- 7. Dictionnaires de mappage contenant une liste
- 8. Ajouter des éléments dans une liste de dictionnaires
- 9. Python: Tri cette liste
- 10. In liste liste tri
- 11. jqueryui accordéon désactiver spécifique selon l'onglet
- 12. Liste des dictionnaires, dans un dictionnaire - en Python
- 13. liste Deserialize des dictionnaires imbriqués à une forme plus simple
- 14. Tableau de tri d'objets PHP selon certains critères?
- 15. iPhone Obj C - Tri d'un tableau Mutable de dictionnaires - affiche une chaîne mais tri par valeur
- 16. Fusionner des dictionnaires de ressources
- 17. Pré-tri d'un DataGrid dans WPF selon l'ordre de tri localisé
- 18. C# - Regex - Correspondance des noms de fichiers selon un modèle de nommage spécifique
- 19. jQuery tri de liste d'ui
- 20. Comment fusionner des listes de dictionnaires
- 21. AutoMapper Tri Liste
- 22. Concaténation de dictionnaires
- 23. tri de la liste chaînée
- 24. Tri std :: liste de pointeurs
- 25. C# liste personnalisée tri
- 26. Éléments de tri Python par une règle définie spécifique
- 27. fréquence élément dans une liste python de dictionnaires
- 28. Liste des actions pour le contrôleur spécifique
- 29. mysql: requête pour retourner scores classe selon un utilisateur spécifique
- 30. Renvoyer une liste différente selon le générique
I Je me prépare pour une solution époustouflante ... –
Sooo .. Est-ce que votre magasin de données ne supporte pas les jointures, ou ne connaissez-vous pas les jointures? –
Avez-vous vérifié cela? http://stackoverflow.com/questions/3301406/reordering-list-of-dicts-arbitrarily-in-python – tokland