DeA*_*DeA 5 python excel dictionary
我正在尝试将包含随机生成的字符串和数字的字典写到Excel文件中。我几乎成功了,但有一个小问题。我的字典的结构如下:
Age: 11, Names Count: 3, Names: nizbh,xyovj,clier
Run Code Online (Sandbox Code Playgroud)
该字典是根据通过文本文件获得的数据生成的。它根据年龄对所有内容进行汇总,如果两个人的年龄相同,则将其分组为一个列表。我正在尝试将此数据写入Excel文件。到目前为止,我已经编写了这段代码。
import xlsxwriter
lines = []
workbook = xlsxwriter.Workbook('demo.xlsx')
worksheet = workbook.add_worksheet()
with open ("input2.txt") as input_fd:
lines = input_fd.readlines()
age_and_names = {}
for line in lines:
name,age = line.strip().split(",")
if not age in age_and_names:
age_and_names[age]=[]
age_and_names[age].append(name)
print age_and_names
for key in sorted(age_and_names):
print "Age: {}, Names Count: {}, Names: {}".format(key, len(age_and_names[key]), ",".join(age_and_names[key]))
row=0
col=0
for key in sorted(age_and_names):#.keys():
row += 1
worksheet.write(row, col, key)
for item in age_and_names[key]:
worksheet.write(row, col+1, len(age_and_names[key]))
worksheet.write(row, col+1, item)
row+=1
workbook.close()
Run Code Online (Sandbox Code Playgroud)
但是,这实际上是在做什么(在excel文件中):
11 nizbh
xyovj
clier
Run Code Online (Sandbox Code Playgroud)
我应该怎么做才能使其看起来像这样?
Age Name Count Names
11 3 nizbh, xyovj, clier
Run Code Online (Sandbox Code Playgroud)
问题确实出在两个 for 循环上。我与他们进行干预和玩耍,直到找到答案。他们工作得很好。感谢你们!
将最后的 for 循环替换为:
for key in sorted(age_and_names):#.keys():
row+=1
worksheet.write(row, col, key)
worksheet.write(row, col+1, len(age_and_names[key]))
worksheet.write(row, col+2, ",".join(age_and_names[key]))
Run Code Online (Sandbox Code Playgroud)