2013-04-23 15 views
5

questa domanda si basa sulla mia domanda permeabile: Python list help (incrementing count, appending)Python contatore risulta file CSV

sono in grado di creare il seguente output quando faccio stampa c;

Counter({(u'New Zealand', 174.885971, -40.900557): 1, (u'Ohio, USA', -82.90712300000001, 40.4172871): 1}) 

Che è esattamente come voglio e ora mi piacerebbe sapere come posso scrivere questo in un file CSV. Ogni riga rappresenterà una nuova posizione, lon/lat, count.

Voglio attraversare il contatore e accedere a queste parti: writer.writerow (["A", "B", "C"]);

A è la posizione come la Nuova Zelanda, B è il lat/lon, C è il conteggio di apparizione,

Come posso accedere ai risultati di conteggio e di ottenere quelle parti desiderate? Grazie.

risposta

8

A Counter è una sottoclasse della classe standard dict; è possibile scorrere sopra le voci del dizionario con .iteritems() (python 2) o semplicemente .items() (Python 3):

for key, count in your_counter.iteritems(): 
    location, lat, long = key 
    writer.writerow([location, lat, long, count]) 

Questo scrive quattro colonne, con 2 colonne separate per la latitudine e la longitudine. Se vuoi combinarli in una colonna, ad esempio una stringa con una barra tra le due coordinate, usa semplicemente la formattazione delle stringhe:

for key, count in your_counter.iteritems(): 
    location, lat, long = key 
    writer.writerow([location, '{}/{}'.format(lat, long), count]) 
+0

Questo funziona. Grazie. – chatu

+0

Come posso ordinare questi ascendenti in base al conteggio? @Martijn – chatu

+0

Ho provato a ordinare (your_counter.iteritems()) ma questo ordina per posizione dove ho bisogno per contare. Grazie. – chatu