Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.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 如何将值作为一个集合来制作词典?_Python_Dictionary - Fatal编程技术网

Python 如何将值作为一个集合来制作词典?

Python 如何将值作为一个集合来制作词典?,python,dictionary,Python,Dictionary,我试图制作一本字典,但我希望它的值部分是一个集合。我想在每次循环时将这些值放入一个集合,例如, {key:value}->{key:value,value,value},{key:value,value}下面是我的代码 from bs4 import BeautifulSoup import urllib import re def linkTexts(url): url = urllib.request.urlopen(url).read() soup = Beautiful

我试图制作一本字典,但我希望它的值部分是一个集合。我想在每次循环时将这些值放入一个集合,例如, {key:value}->{key:value,value,value},{key:value,value}下面是我的代码

from bs4 import BeautifulSoup
import urllib
import re

def linkTexts(url):
    url = urllib.request.urlopen(url).read()
    soup = BeautifulSoup(url,'lxml')
    
    q2Dictionary = {}
    links = soup.find_all('a', href = True)
    for link in links:
        linkUrl = link["href"]
        if 'http' in linkUrl:
            linkText = link.get_text().strip()
            if linkUrl not in q2Dictionary.keys():
                q2Dictionary[linkUrl] = linkText
            if linkUrl in q2Dictionary.keys():
                q2Dictionary.update({linkUrl: linkText})
与空集合一起使用:

q2Dictionary.setdefault(linkUrl, set()).add(linkText)
这相当于:

if linkUrl not in q2Dictionary:
    q2Dictionary[linkUrl] = set()
q2Dictionary[linkUrl].add(linkText)

而不是制作字符串字典。为什么不编一本字符串列表词典呢

from bs4 import BeautifulSoup
import urllib
import re
def linkTexts(url):
    url = urllib.request.urlopen(url).read()
    soup = BeautifulSoup(url,'lxml')
    
    q2Dictionary = {}
    links = soup.find_all('a', href = True)
    for link in links:
        linkUrl = link["href"]
        if 'http' in linkUrl:
            linkText = link.get_text().strip()
            if linkUrl not in q2Dictionary.keys():
                q2Dictionary[linkUrl] = [linkText]
            else:
                q2Dictionary[linkUrl].append(linkText)

使用链接文本作为列表初始化每个键,并将具有相同键的链接文本附加到现有列表中。

请浏览、和,了解此网站的工作原理,并帮助您改进当前和未来的问题,这可以帮助您获得更好的答案。值得注意的是,
dict.update()
在这里有点过分了,因为如果执行了第二个
,则键
linkUrl
存在一次,因此可以使用
q2Dictionary[linkUrl]=linkText
将第一个
linkText
追加两次。您可以简单地使用
else
,或者更好的是,重写为使用
q2Dictionary.setdeault()
,而不是在q2Dictionary.keys()中使用
if linkUrl,就像在.BTW中一样,欢迎使用SO!如果你想得到提示,请查看,谢谢!根据@wjandrea评论修改