Python 获取与嵌套列表不同的列表
我是从javascript/nodeJS成长起来的Python新手。我有一个带有嵌套列表的python字典,访问它时遇到很多困难。我需要拉出嵌套列表,以便检查唯一的电子邮件。以下是我的Python 获取与嵌套列表不同的列表,python,dictionary,flask,Python,Dictionary,Flask,我是从javascript/nodeJS成长起来的Python新手。我有一个带有嵌套列表的python字典,访问它时遇到很多困难。我需要拉出嵌套列表,以便检查唯一的电子邮件。以下是我的GET请求收回的内容: {"data": [{"login_date": "2014-04-17T19:14:29+08:00", "email": "walter.elwyn@yahoo.com"}, {"login_date": "2014-04-22T09:31:56+04:00", "email": "he
GET
请求收回的内容:
{"data": [{"login_date": "2014-04-17T19:14:29+08:00", "email": "walter.elwyn@yahoo.com"}, {"login_date": "2014-04-22T09:31:56+04:00", "email": "helyn67@cruickshankmckenzie.com"}]
返回的实际数据字典要长得多,但您得到了一个要点。。。所以我有两个问题:
from flask import Flask
import requests
import urllib2
app = Flask(__name__)
@app.route('/')
def hello_world():
content = urllib2.urlopen('https://9g9xhayrh5.execute-api.us-west-2.amazonaws.com/test/data').read()
print content
return 'check console'
if __name__ == '__main__':
app.run()
如果您有这样的结构:
>>> response = {"data": [{"login_date": "2014-04-17T19:14:29+08:00", "email": "walter.elwyn@yahoo.com"}, {"login_date": "2014-04-22T09:31:56+04:00", "email": "helyn67@cruickshankmckenzie.com"}]}
那么您拥有的是一个带有键数据的dict
>>> response['data']
[{'login_date': '2014-04-17T19:14:29+08:00', 'email': 'walter.elwyn@yahoo.com'}, {'login_date': '2014-04-22T09:31:56+04:00', 'email': 'helyn67@cruickshankmckenzie.com'}]
您可以通过以下列表获取电子邮件列表:
>>> [user['email'] for user in response['data']]
['walter.elwyn@yahoo.com', 'helyn67@cruickshankmckenzie.com']
>>> {user['email'] for user in response['data']}
set(['helyn67@cruickshankmckenzie.com', 'walter.elwyn@yahoo.com'])
如何在字典中循环查找唯一的电子邮件
要使该列表唯一,可以使用集合:
>>> [user['email'] for user in response['data']]
['walter.elwyn@yahoo.com', 'helyn67@cruickshankmckenzie.com']
>>> {user['email'] for user in response['data']}
set(['helyn67@cruickshankmckenzie.com', 'walter.elwyn@yahoo.com'])
如何通过电子邮件访问内容词典中的特定点
如果要筛选给定的电子邮件,可以使用filter()
如果在我的情况下执行内容['data],我会得到一个内部服务器错误
这是因为要执行content['data']
,content
需要是类似dict的对象。让我们使用requests
lib执行您想要的操作:
>>> import requests
>>> content = requests.get('https://9g9xhayrh5.execute-api.us-west-2.amazonaws.com/test/data')
>>> response = content.json() # reads the data as JSON, into a dict-like object
>>> response.keys()
[u'data']
现在你可以使用
response['data']
如果你只有一个条目,为什么要使用字典?我没有写APIsocontent
是你的字典吗?是的,很抱歉,为了获得唯一的电子邮件ID,{user['email']for user in response['data']}好吧,但让我抓狂的是如果我做了response['data']…content['data]在我的例子中,我遇到了一个内部服务器错误@AdamWeitzman,这是一个使用请求
而不是urllib2
的工作片段,我希望没问题!您可能会喜欢ok惊奇,谢谢您的帮助..当我使用打印响应['data]时我在终端中得到一个JSON打印输出,在浏览器中得到一个内部服务器错误。当我使用返回响应['data']时,我到处都有错误,这是怎么回事?用app运行你的flask应用程序。运行(debug=True)
并找出答案,我认为问题与我的答案无关,因为我粘贴的代码片段是实时运行的:)