code: def put_item(self, table_name, item,
                   expected=None, return_values=None,
                   object_hook=None):
          
          data = {'TableName' : table_name,
                  'Item' : item}
          if expected:
              data['Expected'] = expected
          if return_values:
              data['ReturnValues'] = return_values
          json_input = json.dumps(data)
          return self.make_request('PutItem', json_input,
                                   object_hook=object_hook)
docs: Create a new item or replace an old item with a new
          item (including all attributes).  If an item already
          exists in the specified table with the same primary
          key, the new item will completely replace the old item.
          You can perform a conditional put by specifying an
          expected rule.
  
          :type table_name: str
          :param table_name: The name of the table in which to put the item.
  
          :type item: dict
          :param item: A Python version of the Item data structure
              defined by DynamoDB.
  
          :type expected: dict
          :param expected: A Python version of the Expected
              data structure defined by DynamoDB.
  
          :type return_values: str
          :param return_values: Controls the return of attribute
              name-value pairs before then were changed.  Possible
              values are: None or 'ALL_OLD'. If 'ALL_OLD' is
              specified and the item is overwritten, the content
              of the old item is returned.