Я пытаюсь привести ResultSet к Dict, однако приведения Python, похоже, не хотят работать правильно.
Подключение к AWS DynamoDB
c = boto.dynamodb2.connect_to_region(aws_access_key_id="ACCESSKEYCODE222",aws_secret_access_key="SECRETKEYCODEKFJFJFJF",region_name="us-west-2")
table = Table("reko_response",connection=c)
# Get the result set from DynamoDB
response = table.scan()
print(type(response)) # type of the response recieved = <class 'boto.dynamodb2.results.ResultSet'>
Проверка стандартного преобразования строки в dict, которое работает правильно
string_of_dict = "{'name':'Frederik'}"
dict_of_string = ast.literal_eval(string_of_dict)
print(type(dict_of_string)) # Outputs Correction: <class 'dict'>
Это работает правильно, и строка приводится к диктату.
ResultSet приводит к строке, которая отказывается использовать Dict
for item in response:
string_item = json.dumps(str(dict(item)))
print(string_item)
print(type(string_item)) # Outputs correctly: <class 'str'>
# Cast to Dict Attempt 1
dict_item = json.loads(string_item)
print(type(dict_item)) # Expected Output: <class 'dict'> | Actual Output: <class 'str'>
# Cast to Dict Attempt 2
dict_item = ast.literal_eval(string_item)
print(type(dict_item)) # Expected Output: <class 'dict'> | Actual Output: <class 'str'>
sys.exit()
Похоже, что ни одно из стандартных приведений Python не приводит к приведению строки набора результатов к dict.
Что здесь происходит?
Фактический результат -
<class 'boto.dynamodb2.results.ResultSet'>
<class 'dict'>
"{'timestamp': 'Time: 2018-05-02 08:42:36.978210', 'ID': '39609c57-6ed5-4fc5-8baa-0007d1aeb7ef', 'Store': 'Coles:Brighton', 'Gender': 'Male', 'Age(high)': Decimal('43'), 'smile': False, 'smile_conf': Decimal('90.57567596435546875'), 'Emotion1': 'HAPPY', 'emo2-conf': Decimal('6.381499767303466796875'), 'Emotion3': 'CALM', 'emo1-conf': Decimal('19.021503448486328125'), 'Age(low)': Decimal('26'), 'emo3-conf': Decimal('5.70695400238037109375'), 'Emotion2': 'SAD'}"
<class 'str'>
<class 'str'>
<class 'str'>
Ожидаемый и целевой результат:
<class 'boto.dynamodb2.results.ResultSet'>
<class 'dict'>
"{'timestamp': 'Time: 2018-05-02 08:42:36.978210', 'ID': '39609c57-6ed5-4fc5-8baa-0007d1aeb7ef', 'Store': 'Coles:Brighton', 'Gender': 'Male', 'Age(high)': Decimal('43'), 'smile': False, 'smile_conf': Decimal('90.57567596435546875'), 'Emotion1': 'HAPPY', 'emo2-conf': Decimal('6.381499767303466796875'), 'Emotion3': 'CALM', 'emo1-conf': Decimal('19.021503448486328125'), 'Age(low)': Decimal('26'), 'emo3-conf': Decimal('5.70695400238037109375'), 'Emotion2': 'SAD'}"
<class 'str'>
<class 'dict'>
<class 'dict'>
Это означает, что последние два отпечатка распечатывают строки, которые должны быть преобразованы в диктовку, но остаются в виде строк.
Любая идея будет принята с благодарностью!