正确的python函数序列

时间:2017-01-19 09:35:36

标签: python function python-3.x

我写了一个非常基本的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)

我的第一个代码到第二个代码发生了什么变得有效?

3 个答案:

答案 0 :(得分:1)

list.sort()对列表进行了排序,但返回None,这就是为什么在第一个示例中您看到None打印出来的原因。

你可以使用内置的sorted,它完全相同但创建并返回新列表。

答案 1 :(得分:1)

sort什么都不返回。因此,print(l.sort())不打印任何内容。

但是,l.sort(),因此print(l.sort())确实l进行排序 列表。

因此,在执行l之后打印l.sort()会打印一些内容,即排序的l列表。

答案 2 :(得分:1)

.sort()就地对列表进行排序(它会更改列表本身而不会复制)。但它不会返回任何东西(除了无)。

如果你这样做

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

您打印sort()的返回值 - 无。

但是

mylist.sort()    
print(mylist)

首先排序,然后打印mylist的值。这就是你想要的。

你也可以做到

print(sorted(mylist))

但是mylist保持不变。