Как вернуть несколько значений в формате JSON с помощью python 3.8?

#python #json #python-3.x #amazon-web-services #aws-lambda

#python #json #python-3.x #amazon-веб-сервисы #aws-lambda

Вопрос:

Мне нужно сохранить пару разных URL-адресов в некоторой переменной, а затем я должен вернуть их из функции AWS Lambda, используя json.dumps. Я пробую приведенный ниже метод, но он выдает мне ошибку "errorMessage": "unhashable type: 'dict'" . Код приведен ниже.

 response1 = { "statusCode": 200, "message": "Audio File uploaded successfully", "Link": some_variable1}
response2 = { "statusCode": 200, "message": "Spectrograph uploaded successfully", "Link": some_variable2}
response3 = {response1, response2}
   return {
   'statusCode': 200,
   'body': json.dumps(response3)
   }
 

Есть какие-нибудь идеи, как заставить его работать?

Ответ №1:

{response1, response2} это литерал set, который требует, чтобы элементы были хешируемыми. В этом случае response1, response2 — это словарь, который не является хешируемым.

 >>> a_dictionary = {"statusCode": 200}
>>> {a_dictionary}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
 

Вместо использования set вы можете использовать list или tuple, которые не требуют, чтобы элементы были хешируемыми.

 >>> [a_dictionary]
[{'statusCode': 200}]
>>> (a_dictionary,)
({'statusCode': 200},)
 
 response3 = [response1, response2]  # list
# or
response3 = (response1, response2)  # tuple