在 increasing/decreasing 中包含 datetime.date 的列表的排序列表,以便创建漂亮的 table/csv 文件
sorting list of list containing datetime.date in increasing/decreasing order to create pretty table/csv file
我有一个包含 datetime
object.
的列表列表
table_of_list= [[name, email, address, details, date_last_contacted],
[u'Jane Doe', u'jdoe@abc.com', u'sillybilly', u'dodo', datetime.date(2016, 11, 1)]
[u'John Doe', u'jedoe@abc.com', u'123 house',u'random', dateTime.date(2016,10,1)]
[].....
]
我正在填充这个列表列表,以便我可以利用它来做两件事:
- 使用
prettyTable
模块 创建一个漂亮的 table
- 使用它创建一个
.csv
文件
问题:
我需要按照 date_last_contacted
漂亮的 table 和 csv
顺序排列行的显示方式。
漂亮的 table 排序对我不起作用,可能是因为我有一个 header。但不完全确定。
我是 python 的新手,不确定 lambda 是如何工作的,但是我可以在使用它创建 .csv
文件或漂亮的 table 之前对列表列表进行排序吗?
简而言之,如何以最 pythonic 的方式对 table_of_list
中的列表进行排序?
您可以使用 sorted
函数,将 key
设置为 lambda
函数,returns 最后一个元素 - 按最后一个元素排序。
我们把原来的table的第一行作为表头,然后添加其余的行,这些行是排序的。
sorted_table = [table_of_list[0]]
sorted_table.extend(sorted(table_of_list[1:], key=lambda row: row[-1]))
您可以使用 list = sorted(list, key=...)
或 list.sort(key=...)
。
第一种方法允许您仅对列表的一部分使用切片 get/set - 无需更改第一行。
import datetime
table_of_list = [['name', 'email', 'address', 'details', 'date_last_contacted'],
[u'Jane Doe', u'jdoe@abc.com', u'sillybilly', u'dodo', datetime.date(2016,11,1) ],
[u'John Doe', u'jedoe@abc.com', 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)
我有一个包含 datetime
object.
table_of_list= [[name, email, address, details, date_last_contacted],
[u'Jane Doe', u'jdoe@abc.com', u'sillybilly', u'dodo', datetime.date(2016, 11, 1)]
[u'John Doe', u'jedoe@abc.com', u'123 house',u'random', dateTime.date(2016,10,1)]
[].....
]
我正在填充这个列表列表,以便我可以利用它来做两件事:
- 使用
prettyTable
模块 创建一个漂亮的 table
- 使用它创建一个
.csv
文件
问题:
我需要按照 date_last_contacted
漂亮的 table 和 csv
顺序排列行的显示方式。
漂亮的 table 排序对我不起作用,可能是因为我有一个 header。但不完全确定。
我是 python 的新手,不确定 lambda 是如何工作的,但是我可以在使用它创建 .csv
文件或漂亮的 table 之前对列表列表进行排序吗?
简而言之,如何以最 pythonic 的方式对 table_of_list
中的列表进行排序?
您可以使用 sorted
函数,将 key
设置为 lambda
函数,returns 最后一个元素 - 按最后一个元素排序。
我们把原来的table的第一行作为表头,然后添加其余的行,这些行是排序的。
sorted_table = [table_of_list[0]]
sorted_table.extend(sorted(table_of_list[1:], key=lambda row: row[-1]))
您可以使用 list = sorted(list, key=...)
或 list.sort(key=...)
。
第一种方法允许您仅对列表的一部分使用切片 get/set - 无需更改第一行。
import datetime
table_of_list = [['name', 'email', 'address', 'details', 'date_last_contacted'],
[u'Jane Doe', u'jdoe@abc.com', u'sillybilly', u'dodo', datetime.date(2016,11,1) ],
[u'John Doe', u'jedoe@abc.com', 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)