TypeError: zip-argument #1 moet iteratie ondersteunen

Ik haal gegevens uit mijn woordenboek, maar het lijkt erop dat ze allemaal in unicode zijn. Hoe kom ik van de Unicode-onzin af?


Antwoord 1, autoriteit 100%

Ik neem aan dat je code je de foutmelding geeft, TypeError: zip-argument #1 moet iteratie ondersteunen. U krijgt deze foutmelding vanwege de uitdrukking zip(float(price), Bids). Deze vereenvoudigde code demonstreert de fout:

>>> price = str(u'12.3456')
>>> bids = ['1.0', '2.0']
>>> zip(float(price), bids)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: zip argument #1 must support iteration

De Python 2.x zip()gebouwd -in bibliotheekfunctievereist dat al zijn argumenten iterabel zijn. float(price)is geen herhaling.

Als je tuples wilt maken die float(price)combineren met elk element van de array Bids, kun je itertools.repeat()in de eerste argumentuitdrukking.

>>> import itertools
>>> price = str(u'12.3456')
>>> bids = ['1.0', '2.0']
>>> zip(itertools.repeat(float(price),len(bids)), bids)
[(12.345599999999999, '1.0'), (12.345599999999999, '2.0')]

Ik zie niet in dat uw gebruik van Unicode-gegevenstypen iets te maken heeft met de TypeError.

Other episodes