2016-08-22 97 views

回答

1

好一个元素应该是空或空字符串。见以下实施例

实施例#1:

sort_array = ['abc', 'acd', 'abcd', ''] 
sort_array 
['abc', 'acd', 'abcd', ''] 
sorted(sort_array, key=lambda student: student[0]) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<stdin>", line 1, in <lambda> 
IndexError: string index out of range 

例如#2,我将sort_array采取以列表的列表,它匹配更多到您的sorted_by_name

>>> student_tuples = [ 
...   ['john', 'A', 15], 
...   [] 
... ] 
>>> sorted_by_name = sorted(student_tuples,key=lambda x:x[0]) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<stdin>", line 1, in <lambda> 
IndexError: list index out of range 

因此,我示例请求你请检查你的输入sort_array一次,如果它有任何空列表

0

这意味着至少有一件事情在你的清单是空的,所以doe没有第一个元素。解决方法是简单的,不通过的关键:

sorted_by_name = sorted(sort_array) 

sorted默认实现已经尝试的第一个项目,那么第二项,第三项,等等。当你传递一个键,它首先尝试你的钥匙,第一件。如果它发现两个是相同的,它会自行检查。它检查第一个项目(再次),第二个项目,第三个项目等。换句话说,两者都是相同的,除了提供一个键可能意味着第一个项目被检查两次,当然默认实现不会' t空的列表上出现错误。

相关问题