Как получить значение из словарного ключа?

#python

#python

Вопрос:

Я использую две строки кода из документа API, который выдает изображение ниже. Единственная информация, которую я хочу, это значение «закрыть» (112). Как мне это получить?

 response = requests.request("GET", url, headers=headers)

    print(response.text)
  

введите описание изображения здесь

Из исследования похоже, что он выплевывает словарь? Тем не менее, я попробовал следующий код, но он выдает ошибку:

 for values in response
        print(values, "Key balue", response[values])

#error
  File "hub.py", line 17
    for values in response
                         ^
SyntaxError: invalid syntax
  

Комментарии:

1. Вам нужно двоеточие.

Ответ №1:

кажется, вам не хватает двоеточия в конце цикла for. Попробуйте это:

 for values in response:
        print(values, "Key value", response[values])
  

В качестве альтернативы, вы могли бы попробовать использовать функцию enumerate следующим образом:

 for key, value in enumerate(response):
    print(key, "Key value", value)
  

Комментарии:

1. Это называется двоеточием, а не точкой с запятой.

2. Спасибо, эта ошибка устранена! Теперь он говорит: «AttributeError: объект ‘Response’ не имеет атрибута ‘values'»…. Есть идеи? :/

3. Я добавил другой метод, используя функцию enumerate, попробуйте использовать это. Я понятия не имею, почему ваш код выдает ошибку атрибута.

4. @BhavyeMathur values не является атрибутом Response объекта в Python requests . Рассмотрев вопрос более подробно, похоже, что он хочет проанализировать ответ JSON, поэтому нужно начать с загрузки его в формате JSON. (Я добавил отдельный ответ по этому поводу.)

5. @alani Ах, это имело бы смысл. Я думал о requests как о простом словаре Python.

Ответ №2:

 >>> response = {1:"one", 2:"two", 3:"three"}
>>> type(response)
<type 'dict'>

>>>
>>> for item in response:
...  print item
...
1
2
3
>>> for item in response.values():
...  print item
...
one
two
three
>>>
>>> for item in response.keys():
...  print item
...
1
2
3
  

Комментарии:

1. Спасибо, что избавился от синтаксической ошибки! но появилось другое: «AttributeError: объект ‘Response’ не имеет атрибута ‘values'»…. есть идеи? :/

Ответ №3:

Похоже, у вас есть ответ JSON, и вам нужно проанализировать его как JSON. requests Модуль упрощает это с response.json()

Трудно понять, из чего именно состоит ответ, потому что вы показали его в виде изображения, которое теряет часть текста, а не вставляете в виде текста в вопрос. Но, похоже, вы хотите что-то вроде этого:

 response = requests.request("GET", url, headers=headers)
for key, value in response.json()["quote"].items():
        print(key, value)
  

Кстати, вы можете написать первую строку более просто, используя get метод.

 response = requests.get(url, headers=headers)