Sorting (deeply) nested lists

Discussion in 'Python' started by mamboknave, Mar 2, 2013.

  1. mamboknave

    mamboknave Guest

    I cannot resolve this on my own. Need help, please...

    nestedTuples = [
    [ (L0t0e0, L0t0e1, L0t0e2), (L0t1e0, 2, L0t1e2), (L0t2e0, L0t2e1, L0t2e2) ],
    [ (L1t0e0, L1t0e1, L1t0e2), (L1t1e0, 0, L1t1e2), (L1t2e0, L1t2e1, L1t2e2) ],
    [ (L2t0e0, L2t0e1, L2t0e2), (L2t1e0, 1, L2t1e2), (L2t2e0, L2t2e1, L2t2e2) ] ]

    With LNtXeY I mean the element Y in the tuple X of the list N.

    How can I sort nestedTuples by, say, the 2nd element in the 2nd tuple of each list?

    The above should get sorted as :

    nestedTuples = [
    [ (L1t0e0, L1t0e1, L1t0e2), (L1t1e0, 0, L1t1e2), (L1t2e0, L1t2e1, L1t2e2) ],
    [ (L2t0e0, L2t0e1, L2t0e2), (L2t1e0, 1, L2t1e2), (L2t2e0, L2t2e1, L2t2e2) ],
    [ (L0t0e0, L0t0e1, L0t0e2), (L0t1e0, 2, L0t1e2), (L0t2e0, L0t2e1, L0t2e2) ] ]

    Thanks so much!!
     
    mamboknave, Mar 2, 2013
    #1
    1. Advertisements

  2. mamboknave

    Peter Otten Guest

    def getkey(item):
    return item[1][1]
    namedTuples.sort(key=getkey)

    You can also write this as

    namedTuples.sort(key=lambda item: item[1][1])
     
    Peter Otten, Mar 2, 2013
    #2
    1. Advertisements

  3. mamboknave

    mamboknave Guest

    That's exactly what I did before and got "IndexError: list index out of range".

    So, I thought my lambda was wrong and posted here.

    Now, having seen you reply, I dug deeper and... of course I had IndexError: the list was horribly empty!

    Thanks so much for replying so quickly, Peter!
     
    mamboknave, Mar 2, 2013
    #3
  4. mamboknave

    mamboknave Guest

    That's exactly what I did before and got "IndexError: list index out of range".

    So, I thought my lambda was wrong and posted here.

    Now, having seen you reply, I dug deeper and... of course I had IndexError: the list was horribly empty!

    Thanks so much for replying so quickly, Peter!
     
    mamboknave, Mar 2, 2013
    #4
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.