Sorting and Grouping Nested Lists in Python

后端 未结 8 1600
没有蜡笔的小新
没有蜡笔的小新 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:52

    You're simply creating indexes on your structure, right?

    >>> from collections import defaultdict
    >>> def indexOn( things, pos ):
    ...     inx= defaultdict(list)
    ...     for t in things:
    ...             inx[t[pos]].append(t)
    ...     return inx
    ... 
    >>> a=[
    ...  ['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']
    ... ]
    

    Here's your first request, grouped by position 1.

    >>> import pprint
    >>> pprint.pprint( dict(indexOn(a,1)) )
    {'21': [['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']],
     '22': [['3', '22', '4', '2somename', '2008-10-24 15:22:03'],
            ['7', '22', '3', '2somename', '2008-10-24 15:45:51']]}
    

    Here's your second request, grouped by position 3.

    >>> dict(indexOn(a,3))
    {'19': [['5', '21', '3', '19', '2008-10-24 15:45:45']], '14': [['4', '21', '1', '14', '2008-10-24 15:42:58']], '2somename': [['3', '22', '4', '2somename', '2008-10-24 15:22:03'], ['7', '22', '3', '2somename', '2008-10-24 15:45:51']], '1somename': [['6', '21', '1', '1somename', '2008-10-24 15:45:49']]}
    >>> pprint.pprint(_)
    {'14': [['4', '21', '1', '14', '2008-10-24 15:42:58']],
     '19': [['5', '21', '3', '19', '2008-10-24 15:45:45']],
     '1somename': [['6', '21', '1', '1somename', '2008-10-24 15:45:49']],
     '2somename': [['3', '22', '4', '2somename', '2008-10-24 15:22:03'],
                   ['7', '22', '3', '2somename', '2008-10-24 15:45:51']]} 
    

提交回复
热议问题