<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_sync_acl_cmds(self, switch_acls, expected_acls):
 """Returns the list of commands required synchronize switch ACLs 1. Identify unexpected ACLs and delete them 2. Iterate over expected ACLs a. Add missing ACLs + all rules b. Delete unexpected rules c. Add missing rules """

        switch_cmds = list()

        # Delete any stale ACLs
        acls_to_delete = (set(switch_acls.keys()) - set(expected_acls.keys()))
        for acl in acls_to_delete:
            switch_cmds.append('no ip access-list %s' % acl)

        # Update or create ACLs and rules
        for acl, expected_rules in expected_acls.items():
            switch_rules = switch_acls.get(acl, set())
            rules_to_delete = switch_rules - expected_rules
            rules_to_add = expected_rules - switch_rules
            # Check if ACL requires create or rule changes
            if (acl in switch_acls and
                    len(rules_to_add | rules_to_delete) == 0):
                continue
            switch_cmds.append('ip access-list %s dynamic' % acl)
            # Delete any stale rules
            for rule in rules_to_delete:
                switch_cmds.append('no ' + rule)
            # Add any missing rules
            for rule in rules_to_add:
                switch_cmds.append(rule)
                switch_cmds.append('exit')
        return switch_cmds