code: def UpdateListItems(self, data, kind):
          
          if type(data) != list:
              raise Exception('data must be a list of dictionaries')
          # Build Request
          soap_request = soap('UpdateListItems')
          soap_request.add_parameter('listName', self.listName)
          if kind != 'Delete':
              self._convert_to_internal(data)
          soap_request.add_actions(data, kind)
          self.last_request = str(soap_request)
  
          # Send Request
          response = self._session.post(url=self._url('Lists'),
                                        headers=self._headers('UpdateListItems'),
                                        data=str(soap_request),
                                        verify=self._verify_ssl,
                                        timeout=self.timeout)
  
          # Parse Response
          if response.status_code == 200:
              envelope = etree.fromstring(response.text.encode('utf-8'), parser=etree.XMLParser(huge_tree=self.huge_tree))
              results = envelope[0][0][0][0]
              data = {}
              for result in results:
                  if result.text != '0x00000000' and result[0].text != '0x00000000':
                      data[result.attrib['ID']] = (result[0].text, result[1].text)
                  else:
                      data[result.attrib['ID']] = result[0].text
              return data
          else:
              return response
docs: Update List Items
             kind = 'New', 'Update', or 'Delete'
  
             New:
             Provide data like so:
                 data = [{'Title': 'New Title', 'Col1': 'New Value'}]
  
             Update:
             Provide data like so:
                 data = [{'ID': 23, 'Title': 'Updated Title'},
                         {'ID': 28, 'Col1': 'Updated Value'}]
  
             Delete:
             Just provied a list of ID's
                 data = [23, 28]