Python 如何将值作为一个集合来制作词典?
我试图制作一本字典,但我希望它的值部分是一个集合。我想在每次循环时将这些值放入一个集合,例如, {key:value}->{key:value,value,value},{key:value,value}下面是我的代码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
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评论修改