Parse DynamoDB element to python dict.
# -*- coding: utf-8 -*-
def parse_dynamodb_dict(dynamodb_dict):
def parse_value(value):
value_mapper = {
'S': unicode,
'N': float,
'B': str,
'SS': lambda x: [unicode(item) for item in x],
'NS': lambda x: [float(item) for item in x],
'BS': lambda x: [str(item) for item in x],
'M': parse_dynamodb_dict,
'L': lambda x: [parse_value(item) for item in x],
'NULL': lambda x: None if bool(x) else '',
'BOOL': lambda x: x in [True, 'True', 'true', '1', 1, 'yes']
}
key = value.keys()[0] # It's a dictionary with one key
return value_mapper[key](value[key])
result_dict = {}
for key in dynamodb_dict:
result_dict[key] = parse_value(dynamodb_dict[key])
return result_dict