【发布时间】:2018-05-04 06:02:16
【问题描述】:
我正在尝试对列表进行排序,但忽略了前缀。这个问题已经回答了here。它应该是直截了当的,只是它不起作用。这是我所拥有的:
def sort_it(lst, ignore):
return lst.sort(key=lambda x: x.strip(ignore))
myList = ["cheesewhiz", "www.cheese.com", "www.wagons.com", "www.apples.com", "www.bananas.com"]
ignoreThis = "www."
sort_it(myList, ignoreThis)
print myList
只有排序混淆了,因为第一项作为字符串的一部分没有任何可忽略的内容。我不确定是否添加检查以查看字符串是否包含忽略字符串是 Lambda 的 Pythonic 方法。
我希望结果按字母顺序排列,忽略 www。
www.apples.com
www.bananas.com
www.cheese.com
cheesewhiz
www.wagons.com
【问题讨论】:
-
从排序更改为已排序。排序功能改变了原地列表; `sorted 只保留原始列表,并返回一个已排序的副本。
-
你的按键功能不对。
str.strip不适合删除前缀。使用lambda x: x[4:] if x.startswith('www.') else x。 -
@Prune 当然,但这不是这里的根本问题。
-
@SwakeertJain 问题是
"www.wagons.com".strip("www.")返回'agons.com' -
对不起!我的错。我误解了问题中的最后一句话
标签: python python-2.7 list sorting lambda