|
发表于 2017-4-10 21:07:55
|
显示全部楼层
我写了一个函数可以按照要求排序,
我主要是对于字典的排序有点不清楚,所有整个过程的转换有点啰嗦,但是能搞定
- def getnew(test):
- # 建立一个字典来给字母编号
- dic = {}
- for x,y,n,m in zip(list("abcdefghijklmnopqrstuvwxyz"),list("ABCDEFGHIJKLMNOPQRSTUVWXYZ"),range(2,54,2),range(1,53,2)):
- dic[x] = n
- dic[y] = m
- # 建立一个字典给数字编字母,跟第一个是相反的,为了后面替换回来字母
- dic2 = {}
- for each in dic:
- dic2[str(dic[each])] = each
- # 把字符串变成列表然后把字母替换成数字后按照小到大排序
- list1 = list(test)
- list2 = []
- for i in list1:
- h = i.replace(i,str(dic[i]))
- list2.append(int(h))
- list2.sort()
- # 把排完序号的新的列表中数字替换回之前的字母
- newlist = []
- for k in list(map(str,list2)):
- kk = k.replace(k,dic2[k])
- newlist.append(kk)
- # 把列表变成字符串返回
- newstr = "".join(newlist)
- return newstr
复制代码
来试试一个复杂点的
- test = "easqWAwaeqshfohoahoFHAOJFAOJFAJhaofhaofoajFAOUFOAUQ"
- print(getnew(test))
- >>>AAAAAAaaaaaaeeFFFFFfffHhhhhhJJJjOOOOooooooQqqssUUWw
复制代码 |
评分
-
查看全部评分
|