1

我想通过迭代两个不同的 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

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

我想得到以下输出

{title1:url1, title50,url50}

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

谢谢!

4

1 回答 1

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
于 2015-03-01T16:42:39.437 回答