Python 操作excel之字典应用

目录

1、 字典创建

2、字典的删除

3、 zip函数的使用

4 、应用案例:字典删除

5 、案例应用:字典的基础应用


字典的键必须具有唯一性、键不可变

1、 字典创建

字典由 key:value 组成。

创建字典的方法 dict 转换,数据类型可以是列表、集合、键值对等,需要将健和值放在一起。

#使用dict方法将数据转换为字典
dict(a=1,b=2)
dict([('a',1),('b',2)]) #{'a': 1, 'b': 2}
dict((['a',1],('b',2))) #{'a': 1, 'b': 2}
dict([['a',1],['b',2]]) #{'a': 1, 'b': 2}
dict(zip(['a','b','c'],[1,2,3])) #{'a': 1, 'b': 2, 'c': 3}

使用dict.fromkeys转换法 

#使用dict.fromkeys 转换
dict.fromkeys(('a','b'),2) #{'a': 2, 'b': 2}

dict.fromkeys(['a','b'],2) #{'a': 2, 'b': 2}

2、字典的删除

pop方法 :删除字典给定键key所对应的值 

d2 = {'name':'张三','age':23,'性别':'女'}
d2.pop('name')
print(d2) #{'age': 23, '性别': '女'}

clear方法 :删除字典内所有元素

d1 = {'name':'张三','age':23,'性别':'女'}
print(d1) #{'name': '张三', 'age': 23, '性别': '女'}
d1.clear()
print(d1) #{}

del语句 :可以删除单一元素也可以删除全部字典

d3 = {'name':'张三','age':23,'性别':'女'}
del d3['name']
print(d3) #{'age': 23, '性别': '女'}
del d3
print(d3) #报错,没有d3

3、 zip函数的使用

zip()函数接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple,然后返回由这些tuple组成的list.若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。

a = [4,5,6]
b = ['e','r','t']
c = [9,2,3,4,5,6]

# zip() 函数是对对应元素的打包,zip(*)和zip()相反
abc = zip(a,b,c)
print(list(abc)) #[(4, 'e', 9), (5, 'r', 2), (6, 't', 3)]
_abc = zip(*abc)
print(list(_abc)) #[(4, 5, 6), ('e', 'r', 't'), (9, 2, 3)]

# zip() 之后的结果只能使用一次,使用zip()实际上是一个生成器对象,使用一次就已经是完成一次迭代
# 第二次再次使用list()时迭代已经结束,所以返回[]

4 、应用案例:字典删除

原始数据中有一个全部订单表,已经发货的订单已经全部展示处理,将未发货的in孤单统计到对应的表格中。

Python 操作excel之字典应用_第1张图片

Python 操作excel之字典应用_第2张图片 

思路:首先读入数据然后在全部订单数据中删除已经发货的数据即为未发货数据 。


#导入相关包
import xlrd
from xlutils.copy import copy
#读入相关数据
wb = xlrd.open_workbook('订单.xls')
ws = wb.sheet_by_name('全部订单')
ws_2 = wb.sheet_by_name('已发货')
nwb = copy(wb)
nws = nwb.get_sheet('未发货')
l1 = [ws1.col_values(0),ws1.col_values(1),ws1.col_values(2)] #全部订单的数据
l2 = [ws2.col_values(0),ws2.col_values(1),ws2.col_values(2)] #已发货订单数据
d1 = dict.fromkeys(zip(*l1))  #zip函数的反向操作用的很多
d2 = list(dict.fromkeys(zip(*l)))[1:] 
for x in d2:
	d1.pop(x) #将已经发货的订单从全部订单中删除
r = 0 
for x in d1:
	nws.write(r, 0, x[0])
	nws.write(r, 1, x[1])
	nws.write(r, 2, x[2])
	r+=1
nwb.save('订单.xls')




 

5 、案例应用:字典的基础应用

统计省份、客户名称、订单编号三列中的唯一值。

Python 操作excel之字典应用_第3张图片

代码

import xlrd,xlwt
wb = xlrd.open_workbook('files/业绩表.xls')
ws = wb.sheet_by_name('Sheet1')
nwb = xlwt.Workbook(encoding='utf-8') #创建新的工作簿
nws = nwb.add_sheet('Sheet1')
l = [ws.col_values(0),ws.col_values(1),ws.col_values(2)] #[['省份', '安徽',...],['客户名称', '安徽森爱驰医院管理有限公司',...],['日期', 43412.0, ...]]
d = dict.fromkeys(zip(*l)) #{('省份', '客户名称', '日期'): None, ('安徽', '安徽森爱驰医院管理有限公司', 43412.0): None, ...}
#元组中的数据自动去重
for x in d:
    nws.write(r,0,x[0])
    nws.write(r,1,x[1])
    nws.write(r,2,x[2])
    r+=1
nwb.save('结果表.xls')

你可能感兴趣的:(办公自动化,python,开发语言)