我正在尝试访问字典键和值,但是在执行此操作时,获取TypeError:string indices必须是整数错误。
我正在使用的代码..
def function():
EMAILS_FOR_ISSUES = 'https://github.com/api/v3/users/JimmyBuffet'
resource = requests.get(EMAILS_FOR_ISSUES, auth=AUTH)
if not resource.status_code == 200:
raise Exception(resource.status_code)
print(type(resource.json()))
print(resource.json())
for x in resource.json():
print(x)
print(x[0])
print(x[4])
user_email = x['email']
print(user_email)
return
我得到的响应.. *注意:为了便于阅读,我在这里格式化了dict输出。
<type 'dict'>
{
u'public_repos': 1,
u'site_admin': False,
u'gravatar_id': u'',
u'hireable': None,
u'id': 6048,
u'email': u'jbuffet@xyzxyz.com'
}
public_repos
p
i
Traceback (most recent call last):
File "retrieve_old_issues.py", line 122, in <module>
function()
File "retrieve_old_issues.py", line 58, in function
user_email = x['email']
TypeError: string indices must be integers
目标是获取电子邮件。我认为钥匙前面的unicode角色也搞砸了一些东西,但是还没有能找到任何东西。为什么这不起作用?
答案 0 :(得分:3)
for x in resource.json():
这里你要做的是循环遍历字典中的每个条目并将密钥分配给x。例如,在for循环的第一次迭代中,
x = "public_repo"
这就是为什么你看到“p”和“i”被打印为x [0]和x [4],因为它们分别是字符串“public_repo”的第0和第4位。
您要做的是将resource.json()分配给变量并简单地索引到该变量。例如,
dict = resource.json()
print(dict["email"])