程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

python 学习记录八:取表格种编号重复的最大、最小值

hfteth 2024-12-12 10:43:59 技术文章 16 ℃


原始素材

import openpyxl
from  openpyxl import  Workbook
from  openpyxl import  load_workbook
import os


wbb=Workbook()
wf = wbb.active
wb = load_workbook('取最大最小值.xlsx')
ws = wb['Sheet1']
bianhlb=[]
shuzlb=[]
context={}
for row in range(2, ws.max_row + 1):
   
    bianh = ws["A" + str(row)].value
    shuz = ws["B" + str(row)].value
    bianhlb.append(bianh)
    shuzlb.append(shuz)
#print(bianhlb,shuzlb)
for i in range(len(bianhlb)):
    context[bianhlb[i]]=shuzlb[i]
    
    
keys=[]#设定
for key in context.keys():
    context[key]=[]  #清空键值   赋值为空列表
    keys.append(key)
#print(context)    

print()  #换行
            
for j in range(len(bianhlb)):
    
   for key in context.keys():
           
        if bianhlb[j]== key:
            context[bianhlb[j]].append(shuzlb[j])
#print(context)


contextff=context.copy()

for key in contextff.keys():   
    
    contextffmax=min(contextff[key])  #改变键值,一个个改就行

    contextff[key]=contextffmax
print('最小值为:',contextff)

newlist1=list(sorted(contextff.items(),key=lambda item:item[0] ))
print('按值排序',newlist1)




for key in context.keys():   
    
    contextmax=max(context[key])  #改变键值,一个个改就行

    context[key]=contextmax
print('最大值为:',context)

newlist2=list(sorted(context.items(),key=lambda item:item[0] ))
print('按键排序',newlist2)

biaotou=['编号1','最小数值','编号2','最大数值']
wf.append(biaotou)
for row in range(2,len(context)+2):
   
        for i in range(1,2):
            wf["A" + str(row)].value=newlist1[row-2][i-1]
            wf["B" + str(row)].value=newlist1[row-2][i]
            wf["C" + str(row)].value=newlist2[row-2][i-1]
            wf["D" + str(row)].value=newlist2[row-2][i]            
        

wbb.save('处理后.xlsx')
     


处理后新生成的

总体思路是这样:

1、首先读取表格数据到列表bianhlb、shuzlb。把两个列表的值分别作为键、键值写入字典(第一次读,直接读取就行,重复的,后面的把前面的替换了,但键值是唯一的)。目的就是获得字典的键。

2、把前面生成的字典键值清空,做判断,如果bianhlb种的值在字典中存在了,就把数据追加到键值列表中,依次把所有数据写入键值的列表中。

3、对字典遍历,取每一个键的最大值,重新组成字典。

4、对新生成的字典按键排序形成列表(最大值contextff、最小值context)

5、将排序后的数据写入表格

感觉写的有点麻烦呢,有没有更简单的办法呢?请指教

需要程序的,关注并私信留邮箱,说明要什么,到时会发给你程序。

最近发表
标签列表