def update(self, id, quiz_groups, **kwargs):
if not isinstance(quiz_groups, list) or len(quiz_groups) <= <NUM_LIT:0>:<EOL><INDENT>raise ValueError("<STR_LIT>")<EOL><DEDENT>if not isinstance(quiz_groups[<NUM_LIT:0>], dict):<EOL><INDENT>raise ValueError("<STR_LIT>")<EOL><DEDENT>param_list = ['<STR_LIT:name>', '<STR_LIT>', '<STR_LIT>']<EOL>if not any(param in quiz_groups[<NUM_LIT:0>] for param in param_list):<EOL><INDENT>raise RequiredFieldMissing("<STR_LIT>")<EOL><DEDENT>kwargs["<STR_LIT>"] = quiz_groups<EOL>response = self._requester.request(<EOL>'<STR_LIT>',<EOL>'<STR_LIT>'.format(self.course_id, self.quiz_id, id),<EOL>_kwargs=combine_kwargs(**kwargs)<EOL>)<EOL>successful = '<STR_LIT:name>' in response.json().get('<STR_LIT>')[<NUM_LIT:0>]<EOL>if successful:<EOL><INDENT>super(QuizGroup, self).set_attributes(response.json().get('<STR_LIT>')[<NUM_LIT:0>])<EOL><DEDENT>return successful<EOL>
Update a question group given by id.

:calls: `PUT /api/v1/courses/:course_id/quizzes/:quiz_id/groups/:id \
<https://canvas.instructure.com/doc/api/quiz_question_groups.html#method.quizzes/quiz_groups.update>`_

:param id: The ID of the question group.
:type id: int
:param quiz_groups: The name, pick count, and/or question points.
    All of these parameters are optional, but at least one must exist
    (even if empty) to recieve a response.
    The request expects a list, but will only update 1 question group per request.
:type quiz_groups: list[dict]

:returns: `True` if the QuizGroup was updated. `False` otherwise.
:rtype: bool