по какой-то причине я просто не могу перебирать словарь в Python. Я делал это раньше, но почему-то я не могу больше этого делать. Я чувствую, что мне не хватает чего-то очевидного, хотя я не знаю, что именно. В настоящее время я изучаю Python по адресу http://learnpythonthehardway.com/book Упражнение 48. Используя Nosetests и заданный тестовый код, я должен затем закодировать соответствующий код в реальном скрипте, чтобы сделать тестовую работу. Вот код в TestFile:Python итерации по словарю
from nose.tools import *
from ex48 import lexicon
def test_directions():
assert_equal(lexicon.scan("north"), [('direction', 'north')])
result = lexicon.scan("north south east")
assert_equal(result, [('direction', 'north'),
('direction', 'south'),
('direction', 'east')])
Так что теперь я писал этот код, чтобы сделать тестовую работу:
lex = { 'dir':'north', 'dir':'south', 'dir':'east', 'dir':'west',
'dir':'down', 'dir':'up', 'dir':'left', 'dir':'right',
'verb':'go', 'verb':'stop', 'verb':'kill', 'verb':'eat',
'stop':'the', 'stop':'in', 'stop':'of', 'stop':'from', 'stop':'at', 'stop':'it',
'noun':'door', 'noun':'bear', 'noun':'princess', 'noun':'cabinet'}
def scan(word):
for k in lex:
if lex[k] == word:
return (k, word)
return None
assert_equal()
просто проверяет, если оба параметра одинаковы. Я уверен, что это должно работать, но в любом случае я изменил его в соответствии с документацией Python:
def scan(word):
for k, v in dict.iteritems():
if v == word:
return (k, word)
return None
Оба способа просто бросить None
на меня, и я просто не могу понять, почему.
Словари не работают так - вы можете только имеют одно значение, например ключ '' dir''. Кроме того, просмотрите отступы. – jonrsharpe