Python 如何在末尾插入数字
我有一段代码,它对字符串中的字符进行排序,并计算重复的次数Python 如何在末尾插入数字,python,sorting,Python,Sorting,我有一段代码,它对字符串中的字符进行排序,并计算重复的次数 def char_repetition(str): reps = dict() word = [character.lower() for character in str.split()] word.sort() for x in word: if x in reps: reps[x] += 1 else:
def char_repetition(str):
reps = dict()
word = [character.lower() for character in str.split()]
word.sort()
for x in word:
if x in reps:
reps[x] += 1
else:
reps[x] = 1
return reps
for x in char_repetition(str):
print (x,char_repetition(str)[x])
因此,'1 2 3 2 1 a b c b a'
的输入将产生:1 2
2
3 1
a2
b2
c1
问题是,我希望数字显示在输出的末尾,如下所示:
a2
b2
c1
1 2
2
3 1
改变 到
从注释中的ekhumoro,可以使用自定义键对列表进行排序: 发件人: 致:
您应该使用自定义的comperator对字典进行排序:例如使用
word.sort(key=lambda i:(i.isdigit(),i))
。PS:如果列表中包含多位数,则最好执行:word.sort(key=lambda i:(1,int(i))如果i.isdigit()else(0,i))
。
word = [character.lower() for character in str.split()]
word.sort()
digits = []
chars = []
for c in sorted(st.split()):
if c.isdigit():
digits.append(c)
else:
chars.append(c.lower())
word = chars + digits
word = [character.lower() for character in str.split()]
word.sort()
word = [character.lower() for character in str.split()]
word.sort(key=lambda i: (1, int(i)) if i.isdigit() else (0, i))