在元组Python 3.2中排序超过3个元素

时间:2014-10-13 20:07:11

标签: python-3.x lambda sorted

尝试对指定一个人的生日(日,月,年)的元组进行排序,从最小到最旧。

所以,例如

def sort_something(birthday: [(int, int, int)]):
    sorted(birthday, key=lambda int:int[2])
    return birthday

但是,当我运行它时,会产生索引范围错误。

Traceback (most recent call last):
    line 68, in <module>
    ('Joyce',(2,21,1920))
    line 20, in sort_ages
    sorted(data, key = lambda int: int[2])
    line 20, in <lambda>
    sorted(data, key = lambda int: int[2])
IndexError: tuple index out of range

思想?

1 个答案:

答案 0 :(得分:0)

您的代码中有多个错误:

  • sorted(birthday)会返回一份副本。它不会修改birthday
  • 如果每个项目都有int[2]个数字(日,月,年),则
  • 3应该有效
  • 不要将int用作变量名称,它是内置名称
from datetime import date

def by_date(day_month_year):
    return date(*reversed(day_month_year))

L = [(3, 12, 2059), (13, 3, 1999), (1, 1, 2059)]
print(L)
L.sort(key=by_date)
print(L)

输出

[(3, 12, 2059), (13, 3, 1999), (1, 1, 2059)]
[(13, 3, 1999), (1, 1, 2059), (3, 12, 2059)]