恢复excel文件总和

2024-04-20 15:09:47 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,我解释我的问题,我试图通过一个excel文件,其中一列包含用户和其他缺勤恢复每个用户缺勤的总和,但我不能应用循环来做到这一点。我给你看我的密码

在读取excel文件的下面:

print(fichier1)
document1 = xlrd.open_workbook(fichier1)
feuille_1 = document1.sheet_by_index(0)

然后我把我感兴趣的两列放在列表中:

id = []
absence = []
for row in range(1,253):
     id.append(feuille_1.cell(row, 2))
     absence.append(feuille_1.cell(row, 9)

从这里我被阻止了,因为我不能做一个循环,让我知道在文件中有几个行与同一个用户缺勤的总和,但缺勤的数量不同。所以我试着总结他们的缺席。你知道吗

我遇到的问题是,我不能先将缺勤列转换为浮动列。你知道吗

我的excel文件looks like this。你知道吗

现在我有了我的字典,我想知道如何比较两个字典,因为我想比较两个字典中每个用户缺勤的次数。你知道吗

现在我有了另一个excel文件,我对它做了同样的处理:

id1= row[1]
absence2 = []
id3 = []

for row in range(1,360):
       absence.append(float(feuille_1.cell_value(row, 10).replace(",",".")))
       id3.append(id1)

result2 = {}
for name2 in set(id4):
      result2[name2] = 0


for i in range(len(id3)):
       hours2 = float(absence[i])
       name2 = id4[i]
       result2[name2] += hours2

for name2, hours2 in result2.items():
       print(name2 + ":\t" + str(hours2))   

我想用这样的代码来比较这两个字典:

for key in result:
    if result[key]!=result2[key]:
           print("%s not equal"% (key))

但我想知道,如果其中一本词典的用户比另一本词典的用户多,这样做是否有效:

result={"jazi": 1, "juge": 1, "juha": 9, "lebe": 4}
result2={"jazi": 3, "juge": 4, "juha": 1, "lebe": 4, "aba":7, "meze":9}


Tags: 文件key用户infor字典excelrow
1条回答
网友
1楼 · 发布于 2024-04-20 15:09:47

如果我理解正确的话,在for循环之后会出现这样的情况:

id = ["jazi", "juge", "juha", "juha", "lebe", "lebe"] absence = ["1", "1", "8", "1", "3", "1"]

你想得到这样的东西:

{"jazi": 1, "juge": 1, "juha": 9, "lebe": 4}

首先,初始化字典:(https://docs.python.org/3/tutorial/datastructures.html#dictionaries) 我使用set()函数来排序重复项

result = {}
for name in set(id):
    result[name] = 0

然后,将小时数添加到相应的名称中:

for i in range(len(id)):
    hours = float(absence[i))
    name = id[i]
    result[name] += hours

最后一步,打印结果:(https://docs.python.org/3/library/pprint.html

import pprint
pprint.pprint(result)

pprint的替代方案:

for name, hours in result.items():
    print(name + ":\t" + str(hours))

使用zip()和dict压缩的相同解决方案:

result = {name: 0 for name in set(id)}
for name, hours in zip(id, absence):
    result[name] += float(hours)

相关问题 更多 >