警告这非常复杂。(我是个白痴,应该休息一下),这是一个令人困惑的标题,但我会尽力解释我遇到的问题,
我有此代码:
test_terms = ['spartan', 'forerunner', 'didact']
test_list = []
for term in test_terms:
search_term = term
search_service = PyMsCognitiveWebSearch('API_Key', search_term,
custom_params={'title': 'name', 'domain': 'url', 'mkt': 'en-usa', 'description': 'url'})
result = search_service.search(limit=3, format='json')
test_list.append(result[term].json)
print(test_list)
这在循环之外时有效,而我只是这样运行:
search_term = 'spartan'
search_service = PyMsCognitiveWebSearch('API_Key', search_term,
custom_params={'title': 'name', 'domain': 'url', 'mkt': 'en-usa',
'description': 'url'})
result = search_service.search(limit=3, format='json')
test_list.append(result[0].json)
print(test_list)
这给了我
[{'id': 'https://api.cognitive.microsoft.com/api/v7/#WebPages.0', 'name': 'Obstacle Course Races | Spartan Race', 'url': 'https://www.spartan.com/', 'isFamilyFriendly': True, 'displayUrl': 'https://www.spartan.com', 'snippet': 'Spartan Race is the global leader in obstacle course races, with the right challenge for anyone - from first-time racers to elite athletes.', 'deepLinks': ... etc, for three more results}]
我的第一个本能不是简单地for term in range(len(test_terms)):
,但是这返回了结果,但是我得到的不是数字,而是列表1到3。
接下来我尝试了for item, term enumerate(test_terms):
但是我得到了这个错误:
TypeError: list indices must be integers or slices, not str
这很有道理,但是鉴于索引是一个“字符串”,我不确定确切如何进行操作,并且我尝试用两种不同的方式枚举它,删除result[term].json
并将其更改为{{ 1}}也会引发对象错误。
任何帮助都会很棒!此外,package规格是否有帮助。
更新:
result.json
是一个Web对象,本质上是这样(通过文档):
result
但是它是一个巨大的嵌套列表,我在白板上写了出来,它返回3个列表,其中包含9种元素,混合类型,一个列表和一个字典。从字面上看,我的噩梦。
答案 0 :(得分:1)
在for循环中使用'term'的方式使'term'成为字符串(['spartan','forerunner','didact']中的一个)。您正在寻找要在“ result [term]”中使用的整数,因此,请坚持使用枚举,但请记住,使用枚举元组的第一部分是“枚举”,第二部分是项目。
for i, term in enumerate(test_terms):
...
test_list.append(result[i].json)