首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何才能使输出有序?

如何才能使输出有序?
EN

Stack Overflow用户
提问于 2015-08-25 04:02:01
回答 2查看 65关注 0票数 0
代码语言:javascript
运行
复制
import xlrd
import sys

from collections import defaultdict
out = defaultdict(list)

workbook = xlrd.open_workbook('Dummy Input Data.xlsx')
worksheet = workbook.sheet_by_index(0)
headers = worksheet.row(0)
result = []
for index in range(worksheet.nrows)[1:]:
    result.append(worksheet.row(index)[0].value)
for uniq in set(result):
    sum = 0
    for index in range(worksheet.nrows)[1:]:
       if uniq == worksheet.row(index)[0].value:
            sum = sum + worksheet.row(index)[4].value
    out[uniq] = int(sum)
for rec in out:
    print rec+" "+str(out[rec])

I got output like this:
Engineer-2 16
Engineer-3 19
Engineer-1 11
Engineer-4 24
Engineer-5 12

如何对名字和数字进行排序,我需要得到有序的结果,比如:

工程师-1 11

工程师-2 16

工程师-3 19

工程师-4 24

工程师-5 12

如何得到这样的结果,应该从1,2,3,4,5开始。但我的产出不太好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-25 04:32:17

您正在使用两种不同的数据结构--没有任何顺序感的结构--字典和set --因此,获得与原始顺序不同的结果(在excel中存在的顺序)不应该让人感到意外。

如果您想要的是使用name1-5命令结果,那么您可以在out.keys()上使用sorted(),例如-

代码语言:javascript
运行
复制
for rec in sorted(out.keys()):
    print rec+" "+str(out[rec])

如果您的真正意图是以原始格式返回数据,它存在于excel中,那么您不应该为uniq元素创建一个集合,而是使用另一个集合来存储已经看到的元素,从而创建result作为唯一元素的列表。例子-

代码语言:javascript
运行
复制
seen = set()
result = []
for index in range(worksheet.nrows)[1:]:
    e = worksheet.row(index)[0].value
    if e not in seen:
        seen.add(e)
        result.append(e)

然后使用它,result列表来迭代字典来打印值。例子-

代码语言:javascript
运行
复制
for rec in result:
    print rec+" "+str(out[rec])
票数 0
EN

Stack Overflow用户

发布于 2015-08-25 04:30:59

试试这个:

代码语言:javascript
运行
复制
for rec in sorted(out.keys()):
    print rec+" "+str(out[rec])

演示:

代码语言:javascript
运行
复制
>>> a
{'Engineer-2': 16, 'Engineer-3': 19, 'Engineer-1': 11, 'Engineer-4': 24, 'Engineer-5': 12}
>>> for k in sorted(a.keys()):
...     print k, a[k]
... 
Engineer-1 11
Engineer-2 16
Engineer-3 19
Engineer-4 24
Engineer-5 12
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32195318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档