【发布时间】:2017-01-13 02:17:47
【问题描述】:
我正在编写一个程序来识别 Excel 电子表格中特定列(名为“StrId”)中的重复值及其计数。除了找到重复,我还需要知道每个值重复了多少次。
Excel 数据被处理为字典列表(每行一个字典),标题作为键,数据作为值,例如 [{'StrId' : 1, 'ProjId' : 358}][{'StrId' : 2, 'ProjId' : 984...}] 等
我的计划是首先识别每个字典中的“StrId”键,将它们放在一个列表中,然后在该列表中创建另一个字典以传递值并在超过 1 个值时分开,计算出现的那些不止一次。
这是我的代码。现在,它会显示带有第一个值的“KeyError”消息,然后停止。
如果有任何帮助,我将不胜感激。提前致谢
from openpyxl import load_workbook
workbook = load_workbook('./fullallreadyconversionxmlclean4.xlsx')
sheet = workbook['Full-All']
headers = ["StrId", "ProjectId", "TweetText", "Label"]
excel_data = []
for row_num, row in enumerate(sheet):
if row_num is 0:
continue
row_data = {}
for col_num, cell in enumerate(row):
if col_num > len(headers) - 1:
continue
key = headers[col_num]
value = cell.value
row_data[key] = value
excel_data.append(row_data)
for row in excel_data:
for key in row:
if key is 'StrId':
value = row[key]
list_ids = []
list_ids.append(value)
dup_dic = {}
for value in list_ids:
if value in list_ids:
dup_dic[value] +=1
else:
dup_dic[value] =1
print dup_dic
【问题讨论】:
-
print value的输出是什么? -
Projld是否与此相关,或者您正在尝试查找例如1在Strld列中出现的次数? -
print value显示键的值列表。但是,在我将值放入list_ids之后,它们显示“u”(对于 unicode)。我不知道为什么 -
ProjId不相关,但它是从 Excel 转换为 dics 列表的信息的一部分 -
为什么子列表里面有dict,可以有多个吗?
标签: python excel dictionary duplicates