2016-05-02 28 views
9

Ho un problema con python 3. Ho ottenuto il codice python 2.7 e al momento provo ad aggiornarlo. Ottengo l'errore "oggetto di tipo 'carta' non ha len()" in questa parte:l'oggetto di tipo 'map' non ha len() - Python 3

str(len(seed_candidates)) 

Prima inizializzato in questo modo:

seed_candidates = set() 
for word in wordlist: 
    seed_candidates.add(word) 

Così, qualcuno mi può spiegare cosa hanno a che fare

+2

Funziona per me. Pubblica un esempio completo che mostri il problema. Non hai nemmeno chiamato 'map' ovunque nel codice sopra. – interjay

risposta

23

In Python 3, map restituisce un iteratore non una lista:

>>> L = map(str, range(10)) 
>>> print(L) 
<map object at 0x101bda358> 
>>> print(len(L)) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: object of type 'map' has no len() 

È possibile conver t in una lista quindi ottenere la lunghezza da lì:

>>> print(len(list(L))) 
10 
+1

Penso che ci sia una domanda/risposta canonica per questo. La domanda di cui sopra è un duplicato. –