Odpowiedzi:
Musisz użyć czegoś takiego iteritems.
for field, possible_values in fields.iteritems():
print field, possible_values
Zobacz tę odpowiedź, aby uzyskać więcej informacji na temat iterowania przez słowniki, takie jak używanie items(), w różnych wersjach Pythona.
Ponieważ Python 3 nieiteritems() jest już obsługiwany . Użyj items()zamiast tego.
for field, possible_values in fields.items():
print(field, possible_values)
Dla Python 3.x iteritemszostał usunięty. Zamiast tego używaj przedmiotów .
for field, possible_values in fields.items():
print(field, possible_values)
Chcesz użyć iteritems . Zwraca iterator nad słownikiem, który daje krotkę (klucz, wartość)
>>> for field, values in fields.iteritems():
... print field, values
...
first_names ['foo', 'bar']
last_name ['gravy', 'snowman']
Problem polegał na tym, że zapętlałeś pola, które zwracają klucze słownika.
>>> for field in fields:
... print field
...
first_names
last_name
W Python3 iteritems()nie jest już obsługiwany
ROZWIĄZANIE 1 :
Posługiwać się .items
for field, possible_values in fields.items():
print(field, possible_values)
ROZWIĄZANIE 2 :
Można użyć enumerate()także
for field, possible_values in enumerate(fields):
print(field, possible_values)
Nie można iterować bezpośrednio w słowniku. Możesz to zrobić poprzez konwersję na krotkę .
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)
brakuje ci fields.iteritems()w kodzie.
Możesz to również zrobić w inny sposób, uzyskując wartości za pomocą kluczy w słowniku.
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)