gpt4 book ai didi

python - LPTHW 练习 48 帮助 - 使用列表中的元组

转载 作者:太空宇宙 更新时间:2023-11-04 07:24:27 24 4
gpt4 key购买 nike

我目前正在通过 LPTHW 并且我要到 excercise 48这是我第一次碰壁。

这是给我的测试用例的第一部分

from nose.tools import *
from ex48 import lexicon

def test_direction():
assert_equal(lexicon.scan("north"), [('direction', 'north')])
result = lexicon.scan("north south east")
assert_equal(result, [('direction', 'north'),
('direction', 'south'),
('direction', 'east')])

This question has been asked here before ,我注意到我目前的解决方案与 answer provided by robbyt 完全相同.但它仍然不起作用。

def scan(thewords):

directions = [('direction', 'north'), ('direction', 'south'), ('direction', 'east')]

thewords = thewords.split()
sentence = []

for i in thewords:
if i in directions:
sentence.append(('direction', i))

else:
sentence.append(('error', i))


return sentence

所以问题是:在获取输入(thewords)之后,我如何正确地搜索元组列表,然后返回它所属的特定元组?

在此先感谢您提供任何类型的答案和建议,真的坚持这个。

最佳答案

受@Evee 第一个解决方案(感谢)的启发,这是我通过所有测试的解决方案。也许它使用的代码比第二种解决方案更多,但它消除了定义的唯一方法之外的循环。

class Lexicon(object):
def __init__(self):
self.mapping = {
'direction': ['north', 'south', 'east', 'west'],
'verb': ['go', 'kill', 'eat'],
'stop': ['the', 'in', 'of'],
'noun': ['door', 'bear', 'princess', 'cabinet']
}
self.mapping_categories = self.mapping.keys()

def scan(self, input):
self.result = []

for word in input.split():
try:
self.result.append(('number', int(word)))
except ValueError:
for category, item in self.mapping.items():
if word.lower() in item:
found_category = category
break
else:
found_category = 'error'
self.result.append((found_category, word))

return self.result

lexicon = Lexicon()

关于python - LPTHW 练习 48 帮助 - 使用列表中的元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7460674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com