2017-01-19 5 views
-2

Я написал очень базовый код Python, но это не сработало:Правильная последовательность функций питона

str = "asddasdvsatvsyvcstvcsacvsacvsaifteiopvnvbcshavsdsdzasbbnyju" 
dict = {} 
for i in str: 
    dict[i] = dict.get(i,0)+1 

print(list(dict.items()).sort()) 

тогда я просто изменил последовательность функций и отделили их, и удивительно это сработало!

str = "asddasdvsatvsyvcstvcsacvsacvsaifteiopvnvbcshavsdsdzasbbnyju" 
dict = {} 
for i in str: 
    dict[i] = dict.get(i,0)+1 

mylist = list(dict.items()) 
mylist.sort()  
print(mylist) 

Что случилось с моего первого по второй код, который заставляет его работать?

+1

str в Python - это встроенный тип. Не используйте str как переменную. –

+1

'dict' также является встроенным. Никогда не следует использовать как переменную, на самом деле я удивлен, что код работает! – Anomitra

ответ

1

.sort() сортирует список на месте (он сам изменяет список и не делает копию). Но это не return ничего (кроме None).

Если вы

print(list(dict.items()).sort()) 

Вы печатаете возвращаемое значение sort() - что нет.

Но с

mylist.sort()  
print(mylist) 

You первого рода, а затем выводить значение mylist. Это то, что ты хочешь.

Вы можете также сделать

print(sorted(mylist)) 

Но что оставляет mylist неизменным.

1

list.sort() сортирует список на месте, но возвращает None, поэтому в первом примере вы видите None распечатано.

Вы можете использовать встроенный sorted, который работает точно так же, но создает и возвращает новый список.

1

sort ничего не возвращает. Поэтому print(l.sort()) ничего не печатает.

Однако l.sort(), и поэтому print(l.sort()), делают Рассортируй l список.

Таким образом, печать l после того, как l.sort() была выполнена, напечатает что-то, а именно, отсортированный список l.

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