| 
 | 
 
 
发表于 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
 
  复制代码 |   
 
评分
- 
查看全部评分
 
 
 
 
 
 |