sorting many arrays from one...
Shagshag13
shagshag13 at yahoo.fr
Tue Jul 9 09:14:33 EDT 2002
"Alex Martelli" <aleax at aleax.it> a écrit dans le message de news: nYAW8.59639$vm5.2174555 at news2.tin.it...
> aux_list = zip(drive, other1, other2, other3)
> aux_list.sort()
>
> for i in range(len(drive)):
> drive[i], other1[i], other2[i], other3[i] = aux_list[i]
>
thanks ! it's quite impressive and even works with array (i didn't even knew this "zip" built-in function nor thought that sorting
was possible on tuples). I think that if you don't use "map" to replace the "for loop", it's because it's impossible, so i don't
need to try ;o)
i have another question, i need a way to have a one to one mapping from string to integer to save storage : in fact having an id key
associated with strings (like in a database). By now i use the code below (which was inspired by seqDict package). But you told me
that to save memory and time i should better use 2 dicts, did i understood well ? or is is a better "efficient" way ?
and again great thanks for all your advices / replies...
s13.
----
def test_Keys():
k = Keys()
t = ('Un', 'Deux', 'Trois', 'Quatre', 'Cinq', 'Six')
for i in range(len(t)):
k.add(t[i])
print "longueur = [%s]" % len(k)
print "element 2 = [%s]" % k[2]
print "position de [%s] = [%s]" % (t[2], k.index(t[2]))
class Keys:
def __init__(self):
self._size = 0
self._elements = {} # dictionary element -> int key - ex: {a : 0, b : 2, c : 1}
self._seqKeys = [] # list containing elements, int key -> element - ex: [a, c, b]
def __str__(self):
# Missing code to check for empty !!!
s = 'Keys (' + "\n"
s += str(self._elements) + "\n"
s += str(self._seqKeys) + "\n"
s += str(self._size) + ' # size' + "\n"
s += ')' + "\n"
return s
def __len__(self):
return self._size
def __getitem__(self, pos):
return self._seqKeys[pos]
def reset(self):
del self._size
del self._elements
del self._seqKeys
self._size = 0
self._elements = {} # element -> int key - ex: {a : 0, b : 2, c : 1}
self._seqKeys = [] # contains elements, int key -> element - ex: [a, c, b]
def get_item(self, pos):
return self._seqKeys[pos]
def index(self, element):
return self._elements[element]
def get(self, key):
if type(key) == types.IntType:
return key
elif type(key) == types.StringType:
return self._elements[key]
def keys(self):
return self._seqKeys
def get_size(self):
return self._size
def add(self, element):
if self._elements.has_key(element):
return self._elements[element]
self._seqKeys.append(element)
self._elements[element] = self._size
self._size += 1
return (self._size - 1)
More information about the Python-list
mailing list