我最近开始学习python,目前正在使用list / loops。在下面的列表中,我添加了(追加)梅赛德斯,用福特替换了本田和插入了wolkswagen 。当我运行代码时,列表正确排序,但新车(福特,丰田和wolkswagen)位于列表的顶部。
代码
cars = ['honda', 'acura', 'bmw', 'bugatti', 'Toyota']
cars.append('mercedes')
cars[0] = 'Ford'
cars.insert(1, 'Wolkswagen')
cars.sort()
for car in cars:
print (car.title() + ", is just a regular car")
结果
Ford, is just a regular car Toyota, is just a regular car Wolkswagen, is just a regular car Acura, is just a regular car Bmw, is just a regular car Bugatti, is just a regular car Mercedes, is just a regular car
答案 0 :(得分:1)
由于Python sorting区分大小写,因此您需要使用排序键显式地使排序不敏感。 sort key是一个生成实际从列表中的对象排序的对象的函数。例如:
cars.sort(key=str.casefold)
str.casefold
接受一个字符串并将其转换为小写,因此所有字符串都将被排序为好像它们是小写的。原件将保持不变。
如果您没有使用任何非拉丁字符,请使用str.lower
也可以正常工作。
如果您的列表排序正确,您可以使用bisect
模块确保正确插入未来的元素,而无需对整个事物进行重新排序。
答案 1 :(得分:0)
按字典顺序排序字符串时,大写字母位于小写字母之前。您需要确保所有名称都在相同的情况下,或者忽略大小写以便获得一致的结果。
E.g:
cars = sorted(s.title() for s in cars)
for car in cars:
print (car + ", is just a regular car")