我有一个遍历两个列表的for循环,并将它们组合在字典中。键是字符串(网页标题),值是列表(包含链接)。
有时我会从字典中已存在的循环中获取相同的密钥。哪个好。但价值不同(新链接),我希望以附加链接的方式更新密钥的值,而不是替换它们。
代码如下所示。注意:issue_links
是一个网址列表
for index, link in enumerate(issue_links):
issue_soup = BeautifulSoup(urllib2.urlopen(link))
image_list = []
for image in issue_soup.findAll('div', 'mags_thumb_article'):
issue_name = issue_soup.findAll('h1','top')[0].text
image_list.append(the_url + image.a['href'])
download_list[issue_name] = image_list
目前,属于同一image_list
密钥的新链接(issue_name
)将被覆盖。我想改为追加它们。有人告诉我使用collections.defaultdict
模块,但我不熟悉它。
注意:我使用enumerate
因为索引会打印到控制台(不包含在代码中)。
答案 0 :(得分:1)
这样的事情:
from collections import defaultdict
d = defaultdict(list)
d["a"].append(1)
d["a"].append(2)
d["b"].append(3)
然后:
print(d)
defaultdict(<class 'list'>, {'b': [3], 'a': [1, 2]})
答案 1 :(得分:0)
if download_list.has_key(issume_name):
download_list[issume_name].append(image_list)
else:
download_list[issume_name] = [image_list]
是不是?如果你有相同的密钥,请附上清单。