for k,v in targets.iteritems():
price= str(v['stockprice'])
Bids = str(u''.join(v['OtherBids']))
Bids = Bids.split(',')
# create a list of unique bids by ranking
for a, b in Zip(float(price), Bids):
try:
del b[next(i for i, e in enumerate(b) if format(e, '.4f') == a)]
except StopIteration:
pass
J'extrais des données de mon dictionnaire mais il semble que toutes soient en unicode. Comment puis-je me débarrasser du non-sens unicode?
Je suppose que votre code vous donne le message d'erreur, TypeError: l'argument Zip # 1 doit prendre en charge l'itération . Vous obtenez cette erreur en raison de l'expression Zip(float(price), Bids)
. Ce code simplifié illustre l'erreur:
>>> 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
La Python 2.x Zip()
fonction de bibliothèque intégrée requiert que tous ses arguments soient itérables. float(price)
n'est pas un itérable.
Si vous souhaitez créer des tuples combinant float(price)
avec chaque élément du tableau Bids
, vous pouvez utiliser itertools.repeat()
dans la première expression d'argument.
>>> 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')]
Je ne vois pas que votre utilisation des types de données Unicode a quelque chose à voir avec le TypeError
.