#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