从for循环中创建Dictionary

时间:2015-03-01 16:37:24

标签: python dictionary beautifulsoup xgoogle

我想通过迭代两个不同的for循环来构建一个字典:

我的代码是:

from bs4 import BeautifulSoup
from xgoogle.search import GoogleSearch, SearchError

try:
    gs = GoogleSearch("search query")
    gs.results_per_page = 50
    results = gs.get_results()

    for res in results:
        print res.title.encode("utf8")
        print res.url.encode("utf8")
        print
except SearchError, e:
    print "Search failed: %s" % e

此代码为每个找到的页面输出标题和网址

我想获得以下输出

{title1:url1, title50,url50}

解决这个问题的方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您需要多个值,则需要一个容器,如果您有重复键,则需要collections.defaultdictdict.setdefault

from collections import defaultdict
d = defaultdict(list)
try:
    gs = GoogleSearch("search query")
    gs.results_per_page = 50
    results = gs.get_results()

    for res in results:
        t = res.title.encode("utf8")
        u = res.url.encode("utf8")
        d[?].extend([t,u]) # not sure what key should be
except SearchError, e:
    print "Search failed: %s" % e

我不确定键应该是什么,但逻辑将是相同的。

如果您的预期输出实际上不正确,并且您只想将每个键t与单个值配对,则只需使用普通字典:

d = {}

try:
    gs = GoogleSearch("search query")
    gs.results_per_page = 50
    results = gs.get_results()

    for res in results:
        t = res.title.encode("utf8")
        u = res.url.encode("utf8")
        d[t] = u
except SearchError, e:
    print "Search failed: %s" % e