Set the element of the list after the given keyword.

        Parameters
        ----------
        keyword : str
            The keyword parameter to find in the list.
            Putting a colon before the keyword is optional, if no colon is
            given, it is added automatically (e.g. "keyword" will be found as
            ":keyword" in the list).

        value : KQMLObject or str
            If the value is given as str, it is instantiated as a KQMLToken

        Example:
            kl = KQMLList.from_string('(FAILURE)')
            kl.set('reason', 'INVALID_PARAMETER')

def set(self, keyword, value):
        """Set the element of the list after the given keyword.

        Parameters
        ----------
        keyword : str
            The keyword parameter to find in the list.
            Putting a colon before the keyword is optional, if no colon is
            given, it is added automatically (e.g. "keyword" will be found as
            ":keyword" in the list).

        value : KQMLObject or str
            If the value is given as str, it is instantiated as a KQMLToken

        Example:
            kl = KQMLList.from_string('(FAILURE)')
            kl.set('reason', 'INVALID_PARAMETER')
        """
        if not keyword.startswith(':'):
            keyword = ':' + keyword
        if isinstance(value, str):
            value = KQMLToken(value)
        if isinstance(keyword, str):
            keyword = KQMLToken(keyword)
        found = False
        for i, key in enumerate(self.data):
            if key.to_string().lower() == keyword.lower():
                found = True
                if i < len(self.data)-1:
                    self.data[i+1] = value
                break
        if not found:
            self.data.append(keyword)
            self.data.append(value)