添加和替换值后的排序列表

时间:2018-03-23 19:49:22

标签: python-3.x list loops

我最近开始学习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

2 个答案:

答案 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")