回答:在底部回答。
我正在使用请求和json从API中提取一些数据,并且正在努力使用嵌套字典。
这是我的JSON。
"data": [
{
"ContactId": "123",
"EmailAddress": "abc@xyz.com",
"FirstName": null,
"LastName": null,
"ClickDate": "6/6/1966",
"Clicks": "5",
"IPAddress": "1.1.1.1.1",
"UserAgent": "IE8.0",
"UniqueLinksClicked": [
{
"LinkURL": "http://link1.com",
"LinkURL": "http://link2.com",
"LinkURL": "http://link3.com"
}
]
}
我可以很好地访问所有ContactID和其他第一级内容,但我不知道如何遍历“ LinkURL”内容。
这是我的蟒蛇...
result = requests.get(requesturl, headers=headers)
jdata = json.loads(result.content)
for result in jdata["data"]:
contactID = str([(result["ContactId"])])
for result in jdata["data"]["UniqueLinksClicked"]: #I'm doing this wrong, but I'm not sure how.
print(ContactID + " " + str([(result["LinkURL"])]))
它告诉我,当我需要将“ UniqueLinksClicked”作为列表时,将其作为列表进行处理。如何正确执行此操作?
编辑:
尝试使用此for link in jdata["data"]["UniqueLinksClicked"]:
时会出错,提示您正在等待列表。
尝试使用此for link in jdata["UniqueLinksClicked"]:
会产生关键错误,因为["UniqueLinksClicked"]
是["data"]
字典中的一项。
Edit2:
我对for variable1 in variable2["dict"]:
部分中的变量命名感到困惑。在从下面得到一些帮助之后,我知道了。
应该看起来像这样...
for item in jdata["data"]:
contactID = str([(item["ContactId"])])
print(contactID)
for link in item["UniqueLinksClicked"]:
print(link["LinkURL"])
感谢您的帮助。
答案 0 :(得分:0)
您可以在嵌套循环中遍历链接。不要在两个嵌套循环中使用相同的变量名result
!在内部循环中使用其他变量名称。
for link in result["UniqueLinksClicked"]:
print(ContactID, link["LinkURL"])