2016-07-20 12 views
-3

コードの下のブロックは、以下の機能google_search私は悩み、なぜ理解し、どのようなresres['items']詩だけresとして返されたときに起こるを持っていて、次のフォーラムProgrammatically searching google in Python using custom search返り値['string']は何をしますか?

from googleapiclient.discovery import build 
import pprint 

my_api_key = "Google API key" 
my_cse_id = "Custom Search Engine ID" 

def google_search(search_term, api_key, cse_id, **kwargs): 
    service = build("customsearch", "v1", developerKey=api_key) 
    res = service.cse().list(q=search_term, cx=cse_id, **kwargs).execute() 
    return res['items'] 

results = google_search(
    'stackoverflow site:en.wikipedia.org', my_api_key, my_cse_id, num=10) 
for result in results: 
    pprint.pprint(result) 

から取られています。

EDIT:おそらく、2つの亜種の変更の結果を示すのが役に立ちます。

res['items']を使用した場合、resultsは、それぞれ11個の値を含む10個の値を含む辞書です。

ちょうどresを使用すると、resultsは、それぞれ異なる数の項目とデータ構造を含む6つの項目を含む辞書です。

+0

キー値型の配列のように見えます。キー 'string'でエントリの値を取得します。かなりストレートです。 – csmckelvey

+5

ヒント: 'return'はこれとほとんど関係ありません。 'res ['items']'は結果を生成する別の式です。 –

+1

[Pythonチュートリアル](https://docs.python.org/2/tutorial/datastructures.html#dictionaries)を読むことができます。私はその構文を使用するセクションに直接リンクしました。 [最初から開始する](https://docs.python.org/2/tutorial/)が必要な場合があります。 –

答えて

3

このキーの値を変数resに返します。

は、次のようなデータ構造を想像してみて:

{ 
    "errors": [], 
    "items": [ "item1", "item2", "item3"], 
    "status": "success" 
} 

これは、あなたが今、あなたのプロジェクトで使用することができ、通常のPythonの辞書です。 resがその辞書を参照した場合、以下が真であろう:

res['items'] == [ "item1", "item2", "item3"] 

言い換えれば、辞書にそのインデックスで示される配列を返すことになります。名前付きインデックスの場合は、本質的にはres[0]に相当します。

+0

私は辞書ではあまり動作しませんが、それは完璧な意味があります! – Jstuff

0

私の推測では、resは辞書オブジェクトです。 res['items']を返すと、キー'items'に格納されている値が辞書オブジェクトresに戻されます。

0

resは、ここでは、disctionnaryであることが含まれることができるものの例である:

res = { 
    'item_count': 50, 
    'items': ['item1', 'item2', 'item3'], 
    'search' : 'search terms here' 
} 

あなたがresを返す場合、あなたは結果のすべてを取得します。私の例では、例えばitem_countにアクセスして結果の数を得ることができます。

res['items']を返すと、クエリの結果のアイテムのリストのみが表示されます。

関連する問題