Python 如何对带有数字和字母字符串的dict列表进行排序?

Python 如何对带有数字和字母字符串的dict列表进行排序?,python,list,sorting,dictionary,Python,List,Sorting,Dictionary,我需要帮助来整理我的目录 my_list = [{'id': 1, 'code': '2'}, {'id': 2, 'code': 'b'}, {'id': 3, 'code': '1'}, {'id': 4, 'code': '10'}, {'id': 5, 'code': 'a'}] import operator my_list.sort(key=operator.itemgetter('code')) 结果: [{'id': 3, 'code': '1'}, {'id': 4, 'c

我需要帮助来整理我的目录

my_list = [{'id': 1, 'code': '2'}, {'id': 2, 'code': 'b'}, {'id': 3, 'code': '1'}, {'id': 4, 'code': '10'}, {'id': 5, 'code': 'a'}]

import operator
my_list.sort(key=operator.itemgetter('code'))
结果:

[{'id': 3, 'code': '1'}, {'id': 4, 'code': '10'}, {'id': 1, 'code': '2'}, {'id': 5, 'code': 'a'}, {'id': 2, 'code': 'b'}]
我想对列表进行如下排序:

[{'id': 3, 'code': '1'}, {'id': 1, 'code': '2'}, {'id': 4, 'code': '10'}, {'id': 5, 'code': 'a'}, {'id': 2, 'code': 'b'}]

我没有看到排序的答案。

您需要将数字字符串强制转换为int或float,这样排序就不会对数字字符串进行字典排序。一种简单的方法是将自定义排序函数定义为:

def custom_sort(x):
    try:
        return 0, float(x)
    except ValueError:
        return 1, x

my_list.sort(key= lambda x: custom_sort(x['code']))

您需要将数字字符串强制转换为int或float,这样排序就不会对数字字符串进行字典排序。一种简单的方法是将自定义排序函数定义为:

def custom_sort(x):
    try:
        return 0, float(x)
    except ValueError:
        return 1, x

my_list.sort(key= lambda x: custom_sort(x['code']))

谢谢你的回答!如果我有两个代码,比如a_2和a_10,该怎么办?这似乎是一个不同的问题@thomas,需要一个完全不同的方法。我恳请您保留这个问题,并在一个新的单独问题中询问另一个具体案例。请注意,保持问题的焦点是明智的,否则会混淆未来的访问者,我将创建一个新的访问者!非常感谢。谢谢你的回答!如果我有两个代码,比如a_2和a_10,该怎么办?这似乎是一个不同的问题@thomas,需要一个完全不同的方法。我恳请您保留这个问题,并在一个新的单独问题中询问另一个具体案例。请注意,保持问题的焦点是明智的,否则会混淆未来的访问者,我将创建一个新的访问者!非常感谢。答案有用吗?别忘了你可以投票并接受答案。看,谢谢!答案有用吗?别忘了你可以投票并接受答案。看,谢谢!