On Tue, 2006-04-11 at 22:17 -0400, Kent Johnson wrote: > Victor Bouffier wrote: > > > If the second element in each array passed as x is of variable length > > (that is, it has a different element count than three, in this case), > > the program needs to extend the list instead. Without list > > comprehensions, and the added capability to utilize and sized list as a > > second element, my code ended up looking like the following: > > > > temporal = [] > > for x in elements: > > lst = [x[0], description[x[0]]] > > lst.extend(x[1]) > > temporal.append([x[1][1], lst]) > > temporal.sort() > > temporal.reverse() # sort descending > > elements = [ x[1] for x in temporal ] > > > > Is there a way to use list comprehensions to append or extend the array > > as needed by the second code listing? > > I think you are looking for > temporal = [ [x[0], description[x[0]]] + x[1] for x in elements ] >
Hi Kent, I try this one and get the following error: TypeError: list objects are unhashable I figured it is because of the x[0] element being used as a dict key. Can you explain further where this error comes from? Are you getting it too? > but I would make two steps, one for the sort using just > [ (x[0], x) for x in elements ] > You are right. This is cleaner and not a big deal to do in two steps. However for the issue at hand, it still keeps x as a two element list: [codigo, [ cant, importe, porc]], which I would like to have extended: [codigo, cant, importe, porc] It is not a big deal. That is why I finally went with the longer version Alan suggested. Before the sort I get a two element list, the second element being the list I finally want as output. > then when you pick the data back out you can format it how you like. > Right. After the sort I just get that second element in another list comprehension lines = [ x[1] for x in temp ] Thanks for your help. Victor > > Kent > > PS to John: the original solution is using DSU, aka Schwarzian Transform > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor