2016-11-14 3 views
0

ich mit MySQL-Datenbank und holte zwei Spalten von MySQL mit Python mitSortierung Werte in großen Wörterbuch geholt von MySQL in Python

query = ('select test_id, a_id from b.atc_id_TO_cID ') 


    cursor.execute(query) 
    rows = cursor.fetchall() 



    CountinmyDi = {} 

    for row in rows: 

      if not row[0] in CountinmyDi.keys(): 
        CountinmyDi[row[0]] = 1 
      else : 
        CountinmyDi[row[0]] += 1 
    for key in CountinmyDi.keys(): 
        print str(key) + ":" ,CountinmyDi[key] 

und erstellt ein Wörterbuch CountinmyDi die einzigartigen Elemente in dem Wörterbuch zu zählen. Jetzt habe ich zum Beispiel:

testA: 2 TestB: 82 TestC: 102 Test D: 3 Test E: 1 und so weiter .. über 220 Artikel

Ich mag die Elemente in meinem Wörterbuch sortieren für Beispiel, das auf der Grundlage ihrer Werte auf absteigende Reihenfolge ansteigt, zum Beispiel testC: 102, testB: 82, testD: 3, test A: 2, test E: 1. Ich würde gerne eine Idee bekommen, wie ich das tun könnte. Danke und wenn Sie weitere Infos benötigen, kann ich gerne zur Verfügung stellen.

+0

Diese Frage hat nichts mit MySQL zu tun hat, also bitte den Tag zu entfernen. – FDavidov

+1

Warum schreibst du nicht einfach die richtige Abfrage, damit du nichts in Python machen musst? –

+0

okay sicher. Ich tat :) fdavidov –

Antwort

1

ich die Datenbank fragen würde, um es für Sie zu tun, SQL-Abfrage wäre:

select test_id, count(*) as count from b.atc_id_TO_cID group by test_id order by count 

und es wird eine 2 Säulentisch mit test_id, die Anzahl der Tests mit dieser test_id

zurückkehren wenn Sie es auf diese Weise nicht tun können, würde ich ein Python built-in Counter verwenden:

from collections import Counter 

query = ('select test_id, a_id from b.atc_id_TO_cID ') 
cursor.execute(query) 

test_counter = Counter(row[0] for row in cursor.fetchall()) 

for test_id, count in test_counter.most_common(): 
    print(test_id, ":", count) 
+0

Perfekt. Vielen Dank Guillaume. Es klappt –

Verwandte Themen