排序

2019-11-11  本文已影响0人  泡菜鸡丁

1.sort方法

python内置了sort方法,可以很方便地对某个list进行排序

2.自定义排序(例如,按关键词的权重排序,按人的年龄排序,等等)

若list中每个元素都是2-tuple,tuple中第一个元素为string类型的keyword,第二个元素为该字符串对应的权重(int类型),希望权重排序(从高到低)

例如:l = [("a",4),("b",2),("c",8),("d",1)]

l.sort( key= lambda d:-d[-1])

#负号表示倒序,正号表示正序

print(l)

#打印:[("c",8),("a",4),("b",2),("d",1)]

3. dict排序

对字典的排序,因为每一个项包括一个键值对,所以要选择可比较多键或值进行排序

sort(iterable[,cmp[,key[,reverse]]])

例如:d = {"ok":1,"no":2}

# 对字典按键排序,用元组列表的形式返回

print(sorted(d. items(), key= lambda a:a[0]))

print( sorted(d))

# [("no",2),("ok",1)]

# [" no"," ok"]

注意:print(d)打印原字典,并未发生变化

对原字典若按照值排序,用元组列表形式返回,排序后再转成字典,则无法保证排序。

4.类排序

class test:

    def __init__(self,a,b):

        self.a = a

        self.b =

test1 = test(5,25)

test2 = test(50,35)

test3 = test(10,15)

tests = [test1,test2,test3]

# 以key来排序

result = sorted(tests,key=lambda d:d.a)

for item in result:

    print("a:%s" % item.a)

# 遍历原资料,顺序未有变化

for item in result:

    print("a:%s" % item.a)

注:在python中对列表、元组、字典等内置的数据结构的处理事很方便的事情。python借鉴lisp中的很多函数式计算方式来处理列表,可以极大的简化我们的代码。

①set():将元组、列表转换成没有重复项的集合

②list():将集合、元组转换成列表

③tuple():将集合、列表转换成元组

④map(func,list):将list的每一个元素传递给func的函数,这个函数有一个参数,且返回一个值,map将每一次调用函数返回的值组成一个新的列表返回。

⑤filter(func,list):将list的每一个元素传递给func的函数,这个函数有一个参数,返回bool类型的值,filter将返回true的元素组成新的列表

⑥reduce(func,list):将list的元素,挨个取出和下一个元素通过func计算后将结果和再下一个元素继续计算。

上一篇下一篇

猜你喜欢

热点阅读