sorting - Change the way sorted works in Python (different than alphanumeric) -


i'm representing cards in poker letters (lower , uppercase) in order store them efficiently. need custom sorting function allow calculations them.

what fastest way sort letters in python using

['a', 'n', 'a', 'n', 'b', 'o', ....., 'z'] 

as ranks rather than

['a', 'b', 'c', 'd', 'e', 'f', ....., 'z'] 

which default?


note, sorting derived from:

import string         c = string.letters[:13]         d = string.letters[13:26]         h = string.letters[26:39]         s = string.letters[39:]          'a' = 2 of clubs 'n' = 2 of diamonds  'a' = 2 of hearts 'n' = 2 of spades etc 

you can provide key function sorted, function called each element in iterable , return value used sorting instead of elements value.

in case might following:

order = ['a', 'n', 'a', 'n', 'b', 'o', ....., 'z']  sorted_list = sorted(some_list, key=order.index) 

here brief example illustrate this:

>>> order = ['a', 'n', 'a', 'n'] >>> sorted(['a', 'n', 'n', 'a'], key=order.index) ['a', 'n', 'a', 'n'] 

note make more efficient may want use dictionary lookup key function instead of order.index, example:

order = ['a', 'n', 'a', 'n', 'b', 'o', ....., 'z'] order_dict = {x: i, x in enumerate(order)}  sorted_list = sorted(some_list, key=order_dict.get) 

Comments

Popular posts from this blog

php - render data via PDO::FETCH_FUNC vs loop -

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

The canvas has been tainted by cross-origin data in chrome only -