在字典python上循环

在字典python上循环,python,yelp,Python,Yelp,以下是yelp API教程: 我有下面的代码。我基本上是试图以一种有意义的方式分离出结果字典中的元素。现在我只得到了整个数据流。。。我如何在字典中循环,让它一个接一个地清晰地显示所有键和值 import rauth import time def main(): locations = [(39.98,-82.98),(42.24,-83.61),(41.33,-89.13)] api_calls = [] for lat,long in locations:

以下是yelp API教程:

我有下面的代码。我基本上是试图以一种有意义的方式分离出结果字典中的元素。现在我只得到了整个数据流。。。我如何在字典中循环,让它一个接一个地清晰地显示所有键和值

import rauth
import time

def main():
    locations = [(39.98,-82.98),(42.24,-83.61),(41.33,-89.13)]
    api_calls = []
    for lat,long in locations:
        params = get_search_parameters(lat,long)
        api_calls.append(get_results(params))
        #Be a good internet citizen and rate-limit yourself
        time.sleep(1.0)

    ##Do other processing

    for key in api_calls:
        print key

def get_results(params):

    #Obtain these from Yelp's manage access page
    consumer_key = "CONSUMER_KEY_HERE"
    consumer_secret = "CONSUMER_SECRET_HERE"
    token = "TOKEN_HERE"
    token_secret = "TOKEN_SECRET_HERE"

    session = rauth.OAuth1Session(
        consumer_key = consumer_key
        ,consumer_secret = consumer_secret
        ,access_token = token
        ,access_token_secret = token_secret)

    request = session.get("http://api.yelp.com/v2/search",params=params)

    #Transforms the JSON API response into a Python dictionary
    data = request.json()
    session.close()

    return data

def get_search_parameters(lat,long):
    #See the Yelp API for more details
    params = {}
    params["term"] = "restaurant"
    params["ll"] = "{},{}".format(str(lat),str(long))
    params["radius_filter"] = "2000"
    params["limit"] = "10"

    return params

if __name__=="__main__":
    main()

我不确定您希望从结果中得到什么格式。如果需要包含字典中的结果,可以将它们附加到api调用中,然后将它们与密钥一起打印

或者,您可以尝试以下方法:

for idx,key in enumerate(api_calls):
    #This will print out the order and the value
    print ("{}: {}".format(idx,key)) 

api_调用
是一个目录列表。每个DICT都有一个键
business
,该键引用一个DICT列表,该位置的每个业务对应一个DICT

您希望迭代API调用结果列表。对于每个条目,遍历业务列表并打印键
name
phone

for location in api_calls:
     for business in location['businesses']:
         print business['name'], business['phone']
输出:

Creole Kitchen 6143723333
Los Potosinos 6148876895
Royal Fish, Shrimp, & Chicken 6144296002
Shades Restaurant 6142916555
Zanzibar Brews 6147580111
Grass Skirt Tiki Room 6144293650
That Food Truck 6149463797
Los Potosinos 6148876895
Asian Wok II 6142527661
Cafe On Long 6142524552
Beezy's 7344859625
Sidetrack 7344831035
The Bomber Restaurant 7344820550
Maìz Mexican Cantina 7343406010
Bona Sera Cafe 7343406335
Red Rock Downtown Barbecue 7343402381
The Wurst Bar 7344856720
ABC Microbrewery 7344802739
Cafe Ollie 7344828050
Aubree's Pizzeria & Grill 7344838888
Brandys 8152201744
Mark Allen's American Kitchen 8152200642
Bayou Express 8157808651
Demilio's Italian Deli 8152244808
Fourth Street Bakery & Cafe 8152241927
Peru Pizza House Restaurant 8152237408
Right Spice Supper Club 8152239824
Maples Supper Club the 8152231938
Liberty Family Restaurant 8152243240
Pizzas by Marchelloni 8152201564

你在哪里翻字典?我看到您正在get_search_参数中填充字典,但我看不到任何地方可以获得字典的输出。在main函数中:for key in api_调用:print key是否正确?正如您在main()中声明的那样,api_调用是一个列表。所以它没有钥匙。它将有索引。那么我该如何以一种干净的方式列出它的元素呢?你能提供一个你试图实现的输出的例子吗?我得到的输出仍然是这样的:我如何将它分离为餐厅名称和电话,并很好地显示出来?谢谢你的帮助嗨。我尝试使用您的脚本,但出现了以下错误:{u'error':{u'text':u'OAuth凭据无效',u'id':u'invalid\u OAuth\u凭据'}。无论如何,页面上有一条注释,说明此操作返回一个json对象。您可以使用json模块将文本转换为字典。