Sorting and Grouping Nested Lists in Python

后端 未结 8 1609
没有蜡笔的小新
没有蜡笔的小新 2020-11-30 20:05

I have the following data structure (a list of lists)

[
 [\'4\', \'21\', \'1\', \'14\', \'2008-10-24 15:42:58\'], 
 [\'3\', \'22\', \'4\', \'2somename\', \'2         


        
8条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-11-30 20:47

    If I understand your question correctly, the following code should do the job:

    l = [
     ['4', '21', '1', '14', '2008-10-24 15:42:58'], 
     ['3', '22', '4', '2somename', '2008-10-24 15:22:03'], 
     ['5', '21', '3', '19', '2008-10-24 15:45:45'], 
     ['6', '21', '1', '1somename', '2008-10-24 15:45:49'], 
     ['7', '22', '3', '2somename', '2008-10-24 15:45:51']
    ]
    
    def compareField(field):
       def c(l1,l2):
          return cmp(l1[field], l2[field])
       return c
    
    # Use compareField(1) as the ordering criterion, i.e. sort only with
    # respect to the 2nd field
    l.sort(compareField(1))
    for row in l: print row
    
    print
    # Select only those sublists for which 4th field=='2somename'
    l2somename = [row for row in l if row[3]=='2somename']
    for row in l2somename: print row
    

    Output:

    ['4', '21', '1', '14', '2008-10-24 15:42:58']
    ['5', '21', '3', '19', '2008-10-24 15:45:45']
    ['6', '21', '1', '1somename', '2008-10-24 15:45:49']
    ['3', '22', '4', '2somename', '2008-10-24 15:22:03']
    ['7', '22', '3', '2somename', '2008-10-24 15:45:51']
    
    ['3', '22', '4', '2somename', '2008-10-24 15:22:03']
    ['7', '22', '3', '2somename', '2008-10-24 15:45:51']
    

提交回复
热议问题