使用Python中的现有或不存在的键将值附加到字典中

时间:2015-03-09 02:59:55

标签: python dictionary

我有一个遍历两个列表的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因为索引会打印到控制台(不包含在代码中)。

2 个答案:

答案 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]

是不是?如果你有相同的密钥,请附上清单。