2009-04-17 13 views
8

Discendente ho questo pezzo di codice:Python Ordina Collections.DefaultDict al fine

visits = defaultdict(int) 
    for t in tweetsSQL: 
     visits[t.user.from_user] += 1 

Ho guardato alcuni esempi on-line che ha utilizzato il metodo ordinato in questo modo:

sorted(visits.iteritems, key=operator.itemgetter(1), reverse=True)

ma mi sta dando:

"TypeError: 'builtin_function_or_method' object is not iterable"

Non so perché.

risposta

12

iteritems è un metodo. Hai bisogno di una parentesi per chiamarlo: visits.iteritems().

Allo stato attuale, si sta passando il metodo iteritems stesso a sorted che è il motivo per cui si lamenta che non può iterare su una funzione o un metodo.

2

Personalmente penso che una di queste forme sia un po 'più concisa in quanto il primo argomento deve essere solo un iteratore iterativo e non iterativo.

sorted_keys = sorted(visits.keys(), reverse=True) 
sorted_keys = visits.keys().sort(reverse=True) 
+0

Vuole ordinare il valore, non sulla chiave – miles82

+0

Hai ragione, ho letto male la domanda. – mattkemp

Problemi correlati