获取不同于嵌套Lis的列表

2024-06-14 22:24:10 发布

您现在位置:Python中文网/ 问答频道 /正文

在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": "helyn67@cruickshankmckenzie.com"}]

实际返回的数据字典要长得多,但是你要明白。。。所以我有两个问题:

  1. 如何通过电子邮件访问内容字典中的特定点

  2. 如何在字典中循环查找唯一的电子邮件?

这是我的代码:

^{pr2}$

Tags: com内容列表datagetdate字典过程
1条回答
网友
1楼 · 发布于 2024-06-14 22:24:10

如果你有这样的结构:

>>> 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"}]}

那么你得到的是一个键为data的dict

^{pr2}$

您可以获得一份包含列表理解的电子邮件列表:

>>> [user['email'] for user in response['data']]
['walter.elwyn@yahoo.com', 'helyn67@cruickshankmckenzie.com']

How do I loop over the dictionary for unique emails?

要使该列表唯一,可以使用集合理解:

>>> {user['email'] for user in response['data']} 
set(['helyn67@cruickshankmckenzie.com', 'walter.elwyn@yahoo.com'])

How do I access a specific point by e-mail in the content dictionary

如果要筛选给定电子邮件,可以使用filter()

>>> filter(lambda user: user['email'] == 'walter.elwyn@yahoo.com', response['data'])
[{'login_date': '2014-04-17T19:14:29+08:00', 'email': 'walter.elwyn@yahoo.com'}]

If I do content['data] in my case, I get an internal server error

这是因为要做content['data']content必须是dict类的对象。让我们使用requestslib来执行您想要的操作:

>>> 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']

相关问题 更多 >