我写了一个非常基本的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)
我的第一个代码到第二个代码发生了什么变得有效?
答案 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
保持不变。