gpt4 book ai didi

Python帮助在连字符后排序

转载 作者:行者123 更新时间:2023-11-28 16:33:18 25 4
gpt4 key购买 nike

我正在从 json 请求中获取数据。我在这里使用这些行来遍历我的 json 对象并删除重复项,然后按第一个字符对其进行排序:

 for x in resources:  
roads.append( os.linesep + x["description"])
TrafficHome = list(set(roads))
TrafficHome.sort()

在我运行这些之后,我得到了这样的输出:

[u'\r\nAt I-55 - Construction work.', u'\r\nAt Willow Ave - Accident.', u'\r\nAt Wolf Rd/Exit 16 - Accident.', u'\r\nBetween 55th St and Plainfield Rd - Roadwork.', u'\r\nBetween County Farm Rd and Windermere Dr - Roadwork.', u'\r\nBetween Geneva Rd and St Charles Rd - Roadwork.', u'\r\nBetween Jeans Rd and Knoll Wood Rd - Roadwork.', u'\r\nBetween Knoll Wood Rd and Jeans Rd - Roadwork.', u'\r\nBetween Lavergne Ave and Roy Ave - Construction work.', u'\r\nBetween Roy Ave and Lavergne Ave - Construction work.', u'\r\nBetween St Charles Rd and Geneva Rd - Roadwork.', u'\r\nBetween Windermere Dr and County Farm Rd - Roadwork.']

然后我运行这一行:

TrafficHome = ' '.join(map(str, TrafficHome))

然后我有一个像这样的字符串:

At I-55 - Construction work.
At Willow Ave - Accident.
At Wolf Rd/Exit 16 - Accident.
Between 55th St and Plainfield Rd - Roadwork.
Between County Farm Rd and Windermere Dr - Roadwork.
Between Geneva Rd and St Charles Rd - Roadwork.
Between Jeans Rd and Knoll Wood Rd - Roadwork.
Between Knoll Wood Rd and Jeans Rd - Roadwork.
Between Lavergne Ave and Roy Ave - Construction work.
Between Roy Ave and Lavergne Ave - Construction work.
Between St Charles Rd and Geneva Rd - Roadwork.
Between Windermere Dr and County Farm Rd - Roadwork.

我想像这样在连字符后按字母顺序排序:

At Willow Ave - Accident.
At Wolf Rd/Exit 16 - Accident.
At I-55 - Construction work.
Between Lavergne Ave and Roy Ave - Construction work.
Between Roy Ave and Lavergne Ave - Construction work.
Between 55th St and Plainfield Rd - Roadwork.
Between County Farm Rd and Windermere Dr - Roadwork.
Between Geneva Rd and St Charles Rd - Roadwork.
Between Jeans Rd and Knoll Wood Rd - Roadwork.
Between Knoll Wood Rd and Jeans Rd - Roadwork.
Between St Charles Rd and Geneva Rd - Roadwork.
Between Windermere Dr and County Farm Rd - Roadwork.

在某些情况下,可能会有 2 个连字符,例如:

At I-55 - Construction work.

所以我需要考虑到这一点,我不确定完成此任务的最佳方法。我不知道我是否应该尝试操作字符串或在将其转换为字符串之前。我是 python 的新手,我将它用于 Tasker 任务,因为 Javascript 不适合我。

非常感谢任何帮助、指导或意见!

最佳答案

sorted() 中作为键的 lambda 函数应该可以解决问题。

sortedlist = sorted(list, lambda x: x.rsplit('-', 1)[-1])

在 python 2.x 上你可能需要这样做:

sortedlist = sorted(list, key=lambda x: x.rsplit('-', 1)[-1])

rsplit('-', 1) 将您的列表分成两部分,从 - 的最后一个实例开始。只要字符串末尾的状态不包含连字符,这就应该有效。

关于Python帮助在连字符后排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29677994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com