Python 3.x 模拟web搜索的python函数
我需要编写一个模拟web搜索的python函数。例如,我有三个网站和关键字对应的网站。函数应该返回所有单词出现在的所有网页的集合。通过这样做并创建一组元组,我已将网页和关键字转换为字符串:Python 3.x 模拟web搜索的python函数,python-3.x,Python 3.x,我需要编写一个模拟web搜索的python函数。例如,我有三个网站和关键字对应的网站。函数应该返回所有单词出现在的所有网页的集合。通过这样做并创建一组元组,我已将网页和关键字转换为字符串: d = {("www.page0.com", {"dog", "cat", "fish"}),("www.page1.com", {"cat", "rat", "frog", "dog"}), ("www.page2.com", {"cat", "rat", "fish", "goat"})} 现在,我需要
d = {("www.page0.com", {"dog", "cat", "fish"}),("www.page1.com", {"cat", "rat", "frog", "dog"}), ("www.page2.com", {"cat", "rat", "fish", "goat"})}
现在,我需要编写一个函数,创建并返回一个字典,将单词映射到页面。因此,键将是单词字符串,值将是该单词出现的页面集。因此,对于我们上面的示例,字典中的两个条目是:
"cat": {"www.page0.com", "www.page1.com", "www.page2.com"}
"goat": {"www.page2.com")
我创建了以下函数:
def createPageDict(d):
return dict((v(x), y) for v in d)
createPageDict(d)
您可以尝试以下功能:
from collections import defaultdict
def create_dict(d):
ret = defaultdict(set)
for site, vals in d:
for v in vals:
ret[v].add(site)
return ret
pages = create_dict(d)
for i, j in pages.items():
print(i, j)
给出:
dog {'www.page0.com', 'www.page1.com'}
cat {'www.page0.com', 'www.page2.com', 'www.page1.com'}
fish {'www.page0.com', 'www.page2.com'}
rat {'www.page2.com', 'www.page1.com'}
frog {'www.page1.com'}
goat {'www.page2.com'}
请注意,我将您的d
转换为
d = (("www.page0.com", ("dog", "cat", "fish")),("www.page1.com", ("cat", "rat", "frog", "dog")), ("www.page2.com", ("cat", "rat", "fish", "goat")))
因为集合
是不可损坏的类型,所以您的d
文本不正确
如果不想使用defaultdict
,只需在添加到集合之前检查密钥是否在词典中:
def create_dict(d):
ret = {}
for site, vals in d:
for v in vals:
if v in ret:
ret[v].add(site)
else:
ret[v] = {site}
return ret
伟大的你有一个任务。你有一个解决办法。你有什么问题?太棒了,谢谢!我如何避免使用defaultdict?我们还没被教过呢。@JOE没问题!添加了另一个解决方案。完美!谢谢你的帮助