2015-03-02 3 views
-2
mylist= [9, 'a', 'cat', False, 3.14, 7] 

h = mylist.sort() 
print(mylist) 

Однако ошибка:В питоне я создал список

Traceback (most recent call last): 

TypeError: unorderable types: str() < int() 

показывает вверх! Как мне изменить типы на int, чтобы программа могла работать успешно.

+2

Что вы ожидаете от своего результата? –

+3

как вы хотите, чтобы ваши 'cat' и' a' были преобразованы в 'int'? –

+1

Я не получил ошибку в 'Python 2.7',' >>> mylist.sort() >>> print mylist [False, 3.14, 7, 9, 'a', 'cat'] ' – Nilesh

ответ

1

Для

Метод .sort() и sorted() требует, чтобы элементы в Iterable одного и того же типа.

>>> sorted([1, 2]) #Same 
[1, 2] 
>>> sorted([1, 'a']) #Different 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unorderable types: str() < int() 
>>> sorted(['b', 'a']) #Same 
['a', 'b'] 
>>> 
0
mylist= [9, 'a', 'cat', False, 3.14, 7] 
    h = sorted(mylist, key=lambda x: str(x)) 
    print(h) 

вам нужно StR его и сортируют.

0

Я думаю, у вас есть несколько вариантов решения проблемы:

1: Используйте попытку избежать сценарий сломать

try: 
    mylist.sort() 
except TypeError: 
    pass 
print(mylist) 

2: Преобразование Everthing в строку

new_list=[str(datum) for datum in mylist] 
new_list.sort() 
print(new_list) 

3: Эмуляция поведения реализации сортировки python2

4: Использовать python2

Смежные вопросы