nodes: 0, module; 1, function_definition; 2, function_name:_radix_sort; 3, parameters; 4, block; 5, identifier:L; 6, default_parameter; 7, expression_statement; 8, if_statement; 9, expression_statement; 10, expression_statement; 11, for_statement; 12, expression_statement; 13, return_statement; 14, identifier:i; 15, integer:0; 16, comment:"""
    Most significant char radix sort
    """; 17, comparison_operator:len(L) <= 1; 18, block; 19, assignment; 20, assignment; 21, identifier:s; 22, identifier:L; 23, block; 24, assignment; 25, binary_operator:done_bucket + [ b for blist in buckets for b in blist ]; 26, call; 27, integer:1; 28, return_statement; 29, identifier:done_bucket; 30, list; 31, identifier:buckets; 32, list_comprehension; 33, if_statement; 34, identifier:buckets; 35, list_comprehension; 36, identifier:done_bucket; 37, list_comprehension; 38, identifier:len; 39, argument_list; 40, identifier:L; 41, list; 42, for_in_clause; 43, comparison_operator:i >= len(s); 44, block; 45, else_clause; 46, call; 47, for_in_clause; 48, identifier:b; 49, for_in_clause; 50, for_in_clause; 51, identifier:L; 52, identifier:x; 53, call; 54, identifier:i; 55, call; 56, expression_statement; 57, block; 58, identifier:_radix_sort; 59, argument_list; 60, identifier:b; 61, identifier:buckets; 62, identifier:blist; 63, identifier:buckets; 64, identifier:b; 65, identifier:blist; 66, identifier:range; 67, argument_list; 68, identifier:len; 69, argument_list; 70, call; 71, expression_statement; 72, identifier:b; 73, binary_operator:i + 1; 74, integer:255; 75, identifier:s; 76, attribute; 77, argument_list; 78, call; 79, identifier:i; 80, integer:1; 81, identifier:done_bucket; 82, identifier:append; 83, identifier:s; 84, attribute; 85, argument_list; 86, subscript; 87, identifier:append; 88, identifier:s; 89, identifier:buckets; 90, call; 91, identifier:ord; 92, argument_list; 93, subscript; 94, identifier:s; 95, identifier:i
code: def _radix_sort(L, i=0):
    """
    Most significant char radix sort
    """
    if len(L) <= 1: 
      return L
    done_bucket = []
    buckets = [ [] for x in range(255) ]
    for s in L:
      if i >= len(s):
        done_bucket.append(s)
      else:
        buckets[ ord(s[i]) ].append(s)
    buckets = [ _radix_sort(b, i + 1) for b in buckets ]
    return done_bucket + [ b for blist in buckets for b in blist ]