Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在末尾插入数字_Python_Sorting - Fatal编程技术网

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))