recorrer - operaciones con diccionarios python
''demasiados valores para descomprimir'', iterando sobre un dict. clave=> cadena, valor=> lista (8)
En Python3 iteritems()
ya no es compatible
SOLUCIÓN 1 :
Utilizar .items
for field, possible_values in fields.items():
print(field, possible_values)
SOLUCIÓN2 :
Puedes usar enumerate()
también
for field, possible_values in enumerate(fields):
print(field, possible_values)
Recibo el error ''too many values to unpack''
. ¿Alguna idea de cómo puedo arreglar esto?
first_names = [''foo'', ''bar'']
last_names = [''gravy'', ''snowman'']
fields = {
''first_names'': first_names,
''last_name'': last_names,
}
for field, possible_values in fields: # error happens on this line
Necesitas usar algo como iteritems .
for field, possible_values in fields.iteritems():
print field, possible_values
Consulte esta respuesta para obtener más información sobre la iteración a través de diccionarios, como el uso de items()
, en versiones de python.
EDITAR
Dado que Python 3 iteritems () ya no es compatible . Use items () en su lugar.
for field, possible_values in fields.items():
print(field, possible_values)
No se puede iterar directamente en el diccionario. Así que puedes a través de la conversión en tupla .
first_names = [''foo'', ''bar'']
last_names = [''gravy'', ''snowman'']
fields = {
''first_names'': first_names,
''last_name'': last_names,
}
tup_field=tuple(fields.items())
for names in fields.items():
field,possible_values = names
tup_possible_values=tuple(possible_values)
for pvalue in tup_possible_values:
print (field + "is" + pvalue)
Para Python 3.x se han eliminado los iteritems
. Use items lugar.
for field, possible_values in fields.items():
print(field, possible_values)
Para listas, use enumerate
for field, possible_values in enumerate(fields):
print(field, possible_values)
iteritems
no funcionará para objetos de lista
Quieres usar iteritems . Esto devuelve un iterador sobre el diccionario, que le da una tupla (clave, valor)
>>> for field, values in fields.iteritems():
... print field, values
...
first_names [''foo'', ''bar'']
last_name [''gravy'', ''snowman'']
Tu problema fue que pasabas por los campos, lo que devuelve las claves del diccionario.
>>> for field in fields:
... print field
...
first_names
last_name
le falta fields.iteritems()
en su código.
También puede hacerlo de otra manera, donde obtiene valores utilizando las claves del diccionario.
for key in fields:
value = fields[key]
data = ([''President'',''George'',''Bush'',''is'',''.''],[''O'',''B-PERSON'',''I-PERSON'',''O'',''O''])
corpus = []
for(doc,tags) in data:
doc_tag = []
for word,tag in zip(doc,tags):
doc_tag.append((word,tag))
corpus.append(doc_tag)
print(corpus)