python:AttributeError: 'list' object has no attribute 'sorted'原因:
没有注意sort()和sorted()的区别
sort()是方法,sorted()是函数,
二者的使用形式不同.
方法是调用,是用.sort()的方式,比如可用 list2.sort()
函数进行数据传递,使用方式不是用. 比如可用sorted(list2)
描述
.sort()与sorted()都可对对象进行排序操作,都是python内置的.
语法:
一. sorted()
sorted
(iterable, *, key=None, reverse=False)
sorted()函数有返回值,一个排序后新列表
Has two optional arguments which must be specified as keyword arguments.
key
指定关键字,指定由函数从原对象中抽取出的条件,根据其返回的参数作为关键字,对原对象中的元素进行排序
例如: key=str.lower
默认值为None,直接对元素进行排序,如对字典,以键名为关键字.
reverse
指定值为布尔型. 只有两个(True或False,注意大写)
如果为True
, 则为反向排序,即降序.
例子:
x=sorted(cars)
print(x) cars列表里的内容没有改变
cars.sort() 原列表直接进行方法调用,所以原列表进行了排序,不可逆
sort是对于列表类型的排序函数,函数原型为:L.sort(key=None, reverse=False),该方法没有返回值,是对列表的就地排序
key-- 是指用来比较的关键字,可以说是列表元素的一个权值。key一般用来接受一个函数(或者匿名函数),这个函数只接受一个元素,并返回其权值
reverse-- 是否逆序排列
```
a = ['Google', 'Runoob', 'Taobao', 'Facebook']
a.sort() # 默认根据第一个字母排序
print(a)
a.sort(key= lambda x : x[1]) # 根据第二个字母排序
print(a)
def takeSecond(x):
return x[1]
a.sort(key=takeSecond)
print(a)
sorted 可以对所有可迭代的对象进行排序操作,尤其是可以对字典进行排序,其形式为:sorted(iterable, key=None, reverse=False)。
sorted函数是有返回值的。
d = {'lily':25, 'wangjun':22, 'John':25, 'Mary':19}
sorted_keys = sorted(d) # 对字典而言,默认是对keys进行排序
print(sorted_keys)
sorted_keys1 = sorted(d, key=lambda x : x[1])
print(d_new2)
d_new = sorted(d.items(), key=lambda x: x[1], reverse=True) # 根据年龄排序,返回列表形式
print(d_new)
d_new = dict(d_new) # 使用内置函数把嵌套列表转换成字典
print(d_new)
sorted_values = sorted(d.values(), key=lambda x:x, reverse=False) # 排序值
print(sorted_values)