python list使用示例 list中找连续的数字

Selena ·
更新时间:2024-11-15
· 812 次阅读

线上有个需求,格式化,从一堆s1,s100-s199中找出连续的服并且格式化显示出来,如:
神魔:S106-109,s123,s125
御剑: s106-109,s123,s125
代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#  2014/01/15 14:15
import sys
from itertools import *
from operator import itemgetter
def parse(filename):
    d = {}
    for line in open(filename, 'r'):
        _line = line.split()
        d.setdefault(_line[0], []).append(_line[1])
    for key in d.keys():
        data = sorted(map(lambda x: int(x[1:]), d[key]))
        sys.stdout.write(key + " ")
        for k, g in groupby(enumerate(data), lambda (i, x): i - x):
            ret = map(itemgetter(1), g)
            if len(ret) > 1:
                sys.stdout.write("S%d-%d," % (ret[0], ret[-1]))
            elif len(ret) == 1:
                sys.stdout.write(str("S%s") % ret[0] + ",")
        sys.stdout.write('\n')
if __name__ == "__main__":
    filename = sys.argv[1]
    parse(filename)

您可能感兴趣的文章:Python将阿拉伯数字转换为罗马数字的方法python实现将英文单词表示的数字转换成阿拉伯数字的方法Python实现把数字转换成中文python3实现短网址和数字相互转换的方法python中将阿拉伯数字转换成中文的实现代码python判断字符串是否纯数字的方法python基础教程之数字处理(math)模块详解kNN算法python实现和简单数字识别的方法python实现的简单猜数字游戏Python中列表元素转为数字的方法分析python处理大数字的方法Python实现将罗马数字转换成普通阿拉伯数字的方法



python list 示例 Python list

需要 登录 后方可回复, 如果你还没有账号请 注册新账号