小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

從中秋節(jié)福利說(shuō)起,如何應(yīng)用 Python

 heii2 2018-09-23

 現(xiàn)有的表格長(zhǎng)這樣: 



最后一欄的備注中的數(shù)字就是該員工應(yīng)得的福利的檔次。



這張表格說(shuō)明了每個(gè)檔次的福利所包含的東西,1檔福利是500元標(biāo)準(zhǔn),2檔福利是300元標(biāo)準(zhǔn)……以此類(lèi)推。最后單位領(lǐng)導(dǎo)想要的表格就是下面這樣的,這是我最后做出的成果的截圖,顯示了每個(gè)部門(mén)分別要買(mǎi)多少東西:  



那么我是如何做到的呢?聽(tīng)媳婦描述完情況之后,我第一反應(yīng)就是可以用Python來(lái)做這件事。事實(shí)證明,Python并沒(méi)有讓我失望。在這個(gè)過(guò)程中,我用到了兩個(gè)Python的模塊,一個(gè)是用來(lái)讀Excel文件的xlrd,另一個(gè)是用來(lái)向Excel文件中寫(xiě)入數(shù)據(jù)的xlsxwriter。

import xlrd
import xlsxwriter

首先獲取兩個(gè)Excel文件對(duì)象: 

workbook1 = xlrd.open_workbook(r'details.xlsx') #這是第一張表
workbook2 = xlrd.open_workbook(r'plan.xlsx') #這是第二張表

sheet3 = workbook1.sheet_by_name('Sheet3') #第一張表的sheet
sheet1 = workbook2.sheet_by_name('Sheet1') #第二張表的sheet

然后讀入第一個(gè)表中的部門(mén)和備注信息,每一條員工的所屬部門(mén)和備注組成一個(gè)元組。

cols_bumen = sheet3.col_values(2)
cols_beizhu = sheet3.col_values(7)

res = list(zip(cols_bumen, cols_beizhu))

res = res[2:len(res)] #前兩行是表頭,我們所需信息從第三行開(kāi)始

讀入第二個(gè)表中的禮品信息。

lipin = [[],
        ['喜盛隆月餅','胡姬花花生油','黃河口大閘蟹','大米','后腿老臘肉','五花老臘肉','醬醋精裝組合'],
        ['怡青源月餅8*100g','大米','醬醋精裝組合','胡姬花花生油','后腿老臘肉','茶葉','五花老臘肉'],
        ['怡青源月餅8*100g','大米','獼猴桃','龍大花生油','面粉'],
        ['怡青源月餅8*100g','大米','后腿老臘肉']]

lipin_list = ['五花老臘肉', '龍大花生油', '醬醋精裝組合', '大米', '獼猴桃', '怡青源月餅8*100g',
             '喜盛隆月餅', '后腿老臘肉', '黃河口大閘蟹', '茶葉', '胡姬花花生油', '面粉']

創(chuàng)建一個(gè)字典huizong,key是部門(mén)名,值是一個(gè)列表,列表中包含該部門(mén)所需的全部商品,假設(shè)需要兩袋大米,那么列表中就會(huì)有兩個(gè)“大米”。最終字典的內(nèi)容應(yīng)該類(lèi)似這樣:

{'高層管理':['大米', '大米', '喜盛隆月餅'], '文化產(chǎn)業(yè)部':['茶葉', '茶葉', '五花老臘肉', '五花老臘肉']}

要做到這一點(diǎn),我們需要遍歷res 

for i in res:
   bumen = i[0] #獲取部門(mén)名
   lipin_level = int(i[1]) #獲取該員工的福利檔次
   if huizong.get(bumen) == None: #如果字典中不存在這個(gè)鍵值對(duì),就創(chuàng)建一個(gè)
       huizong[bumen] = []
   huizong[bumen].extend(lipin[lipin_level]) #在列表中添加對(duì)應(yīng)的禮品名

最后遍歷這個(gè)字典,把每個(gè)部門(mén)中的不同的商品數(shù)量通過(guò)list的count方法計(jì)算出來(lái),將數(shù)據(jù)寫(xiě)到Excel表中,就大功告成了。


 完整代碼如下:

import xlrd
import xlwt
import xlsxwriter

workbook1 = xlrd.open_workbook(r'details.xlsx')
workbook2 = xlrd.open_workbook(r'plan.xlsx')

sheet3 = workbook1.sheet_by_name('Sheet3')
sheet1 = workbook2.sheet_by_name('Sheet1')

linpin = sheet1.col_values(1)
lipin = [[],
        ['喜盛隆月餅','胡姬花花生油','黃河口大閘蟹','大米','后腿老臘肉','五花老臘肉','醬醋精裝組合'],
        ['怡青源月餅8*100g','大米','醬醋精裝組合','胡姬花花生油','后腿老臘肉','茶葉','五花老臘肉'],
        ['怡青源月餅8*100g','大米','獼猴桃','龍大花生油','面粉'],
        ['怡青源月餅8*100g','大米','后腿老臘肉']]

lipin_list = ['五花老臘肉', '龍大花生油', '醬醋精裝組合', '大米', '獼猴桃', '怡青源月餅8*100g',
             '喜盛隆月餅', '后腿老臘肉', '黃河口大閘蟹', '茶葉', '胡姬花花生油', '面粉']

cols_bumen = sheet3.col_values(2)
cols_beizhu = sheet3.col_values(7)

res = list(zip(cols_bumen, cols_beizhu))

res = res[2:len(res)]

huizong = {'高層管理':[]}    

for i in res:
   bumen = i[0]
   lipin_level = int(i[1])
   if huizong.get(bumen) == None:
       huizong[bumen] = []
   huizong[bumen].extend(lipin[lipin_level])

result = xlsxwriter.Workbook('result.xlsx')
worksheet = result.add_worksheet()
for i in range(0, len(lipin_list)):
   worksheet.write(chr(66 + i) + '1', str(lipin_list[i]))

bumen = []
for i in res:
   if bumen.count(i[0]) == 0:
      bumen.append(i[0])

for i in range(0, len(bumen)):
   worksheet.write('A{0}'.format(2+i), str(bumen[i]))

alphaBet = 66
number = 2
j = 0
for key in huizong:
   count = 0
   for i in range(0, len(lipin_list)):
       count = huizong[key].count(lipin_list[i])
       worksheet.write('{0}{1}'.format(chr(alphaBet+i), number+j), count)
   j += 1

result.close()

(完)


看完本文有收獲?請(qǐng)轉(zhuǎn)發(fā)分享給更多人

關(guān)注「Python那些事」,做全棧開(kāi)發(fā)工程師

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約