Python:按日期排序元组.Noob在这里

Jar*_*red 1 python sorting tuples date

大家好.我想排序并返回按日期排序的元组的一部分.

我只想将第一个到第四个记录(元组[:3])排序并打印出来.

tuple = [('Dec 1, 2010', '7.41', '7.60', '7.37'), 
         ('Dec 4, 2010', '7.41', '7.60', '7.37'), 
         ('Dec 2, 2010', '7.41', '7.60', '7.37'), 
         ('Dec 20, 2010', '7.41', '7.60', '7.37'), 
         ('Dec 16, 2010', '7.41', '7.60', '7.37'), 
         ('Jan 2, 2011', '7.41', '7.60', '7.37')]
Run Code Online (Sandbox Code Playgroud)

我试过了:

import operator
sorted(tuple[:3], key=operator.itemgetter('date'), reverse=True)
Run Code Online (Sandbox Code Playgroud)

但是,它返回错误"TypeError:元组索引必须是整数,而不是str.

tok*_*and 7

你为什么过关date?是不是你要找的元组的第一个元素?

sorted(records[:3], key=operator.itemgetter(0), reverse=True)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,您应该在比较它们之前将字符串转换为实际日期.也许:

from datetime import datetime
def get_date(record):
     return datetime.strptime(record[0], "%b %d, %Y")
sorted(records[:3], key=get_date, reverse=True)
Run Code Online (Sandbox Code Playgroud)

我已经改名tuplerecords.正如其他人所指出的,通过使用tuple你是一个阴影类型构造函数; 同样重要的是:它是一个列表而不是一个元组,变量应该是复数(因为它存储一个集合),它应该有一个有意义的名称.