2016-11-13 28 views
-1

我有一個包含datetime對象的列表列表。以遞增/遞減順序排列包含datetime.date的列表以創建漂亮的表格/ csv文件

table_of_list= [[name, email, address, details, date_last_contacted], 
[u'Jane Doe', u'[email protected]', u'sillybilly', u'dodo', datetime.date(2016, 11, 1)] 
[u'John Doe', u'[email protected]', u'123 house',u'random', dateTime.date(2016,10,1)] 
[]..... 
] 

我填充列出的這份名單中,這樣我就可以利用這個做兩件事情:使用prettyTable模塊

  • 使用

    • 創建一個漂亮的表這個創建.csv文件

    問題:

    我需要按照date_last_contacted順序在漂亮表格和csv中組織行的顯示順序排序。 漂亮的表格排序不適合我,也許是因爲我有一個標題。但不完全確定。 我是新來的python,不知道lambda的工作原理,但我可以如何排序列表清單之前,利用它來創建.csv文件或漂亮的表。

    總之,我怎樣才能以最pythonic的方式對table_of_list內的列表進行排序?

  • +0

    'list.sort(鍵= ...)'或'名單=排序(列表,關鍵= ...)' – furas

    回答

    2

    您可以使用sorted函數,其中您將key設置爲lambda函數,該函數返回最後一個元素 - 按最後一個元素排序。

    我們將原始表格的第一行作爲標題,然後添加其他排序的行。

    sorted_table = [table_of_list[0]] 
    sorted_table.extend(sorted(table_of_list[1:], key=lambda row: row[-1])) 
    
    +0

    謝謝!這工作! – polyglot

    1

    您可以使用list = sorted(list, key=...)list.sort(key=...)

    第一種方法可讓您使用切片獲取/設置列表的一部分 - 不更改第一行。

    import datetime 
    
    table_of_list = [['name', 'email', 'address', 'details', 'date_last_contacted'], 
    [u'Jane Doe', u'[email protected]', u'sillybilly', u'dodo', datetime.date(2016,11,1) ], 
    [u'John Doe', u'[email protected]', u'123 house',u'random', datetime.date(2016,10,1) ] 
    ] 
    
    table_of_list[1:] = sorted(table_of_list[1:], key=lambda x: x[4]) 
    
    print(table_of_list) 
    
    +0

    感謝這個作品呢! :) – polyglot