Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 模拟web搜索的python函数_Python 3.x - Fatal编程技术网

Python 3.x 模拟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"})} 现在,我需要

我需要编写一个模拟web搜索的python函数。例如,我有三个网站和关键字对应的网站。函数应该返回所有单词出现在的所有网页的集合。通过这样做并创建一组元组,我已将网页和关键字转换为字符串:

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没问题!添加了另一个解决方案。完美!谢谢你的帮助