Python排序

Python笔记

一、排序函数Python的两个排序函数:

sort() 和 sorted(),其中前者是类成员函数,后者是Python语言的内置函数;两者的返回值不同。它们都包含 key 和 reverse 两个参数,key 参数定义了排序规则,reverse 参数定义排序方式(正序-False 或者 逆序-True),默认情况下 reverse = False。

二、对象列表

1、创建类
class A:
   	def __init__(self):
        self.sttr1 = 1
        self.sttr2 = '2'
        self.sttr3 = 3

默认属性要记得写 def __init__(self),访问对象的所有属性 __dict__

2、创建对象列表:
list = []
for i in range(0,5):
	a = A()
	list.append(a)
3、类对象的自定义排序
#定义类
class Cust:
    def __init__(self):
        self.id = 123
        self.receiving_time = None					#下单时间
        self.receiving_seconds = 123
        self.order_time = 123
        self.order_date = 123						#预约日期
#创建类列表
#初始化
a = []
for i in range(1,5):
    b = Cust()
    a.append(b)
#添加对象
c = Cust()
c.id = 111111
c.receiving_seconds = 456   
c.receiving_time = 123

a[3] = c

d = Cust()
d.id = 565
d.receiving_seconds = 44
d.receiving_time = 50
a[0] = d

e = Cust()
e.id = 6
e.receiving_seconds = 854
e.receiving_time = 720
a[2] = e


#排序前:
for i in range(0,len(a)):
    print(a[i].__dict__)
    
#按id进行排序后:
print("排序后:")
result = sorted(a,key = lambda x:x.id,reverse=False)
#或者
a.sort(key=lambda x:x.receiving_seconds,reverse=False)
for i in a:
    print(i.__dict__)
for i in result:
    print(i.__dict__)

输出结果:
在这里插入图片描述

三、对象字典

1、字典排序
from functools import cmp_to_key
kids = [
    {'name': 'A', 'score': 99, 'age': 12},
    {'name': 'D', 'score': 75, 'age': 12},
    {'name': 'C', 'score': 88, 'age': 15}
]

print(kids)
result = sorted(kids,key = lambda x : x['name'])
print(result)
2、创建对象字典
#创建类
class Cust:
    def __init__(self):
        self.id = 123
        self.receiving_time = None					#下单时间
        self.receiving_seconds = 123
        self.order_time = 123
        self.order_date = 123						#预约日期
        
#创建字典
dict1 = {}
#创建对象列表
#初始化
a = []
for i in range(1,5):
    b = Cust()
    a.append(b)
#添加对象
c = Cust()
c.id = 111111
c.receiving_seconds = 456   
c.receiving_time = 123

a[3] = c

d = Cust()
d.id = 565
d.receiving_seconds = 44
d.receiving_time = 50
a[0] = d

e = Cust()
e.id = 6
e.receiving_seconds = 854
e.receiving_time = 720
a[2] = e

#list -> 对象dict
for i in range(0,len(a)):
    dict1[i] = a[i]
for key,value in dict1.items():
    print(key,value.__dict__)
    
#对 对象dict 自定义排序
dict1 = {}
for i in range(0,len(a)):
    dict1[i] = a[i]
for key,value in dict1.items():
    print(key,value.__dict__)

result = dict(sorted(dict1.items(),key = lambda dict1:dict1[1].receiving_seconds,reverse = False))

print("排序后:")
for key,value in result.items():
    print(key)

结果:

在这里插入图片描述

四、CSV的读写

1、csv写入
def write_csv(path, data_row):
    # with open(path,'a+') as f:
    f = open(path,'a+')
    csv_write = csv.writer(f)
    csv_write.writerow(data_row)

path  = "file_name.csv"
data_row = ["1","2"]
write_csv(path, data_row)
不同方式:
w:以写方式打开,
a:以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+:以读写模式打开
w+:以读写模式打开 (参见 w )
a+:以读写模式打开 (参见 a )
rb:以二进制读模式打开
wb:以二进制写模式打开 (参见 w )
ab:以二进制追加模式打开 (参见 a )
rb+:以二进制读写模式打开 (参见 r+ )
wb+:以二进制读写模式打开 (参见 w+ )
ab+:以二进制读写模式打开 (参见 a+ )
2、csv的读取
 def read_csv(path):
 	with open(path,'r',encoding='utf-8') as f: #按行读取csv文件 并存入list中
        reader = csv.reader(f)
        csv_list = []
        for row in reader:
            csv_list.append(row) 

path  = "./file_name.csv"
write_csv(path)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xxwl.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值