2015-04-16 37 views
3

我從json請求獲取數據。我用這些線在這裏重複了我的JSON對象,並刪除重複,然後通過第一個字符排序是:Python幫助在連字符後排序

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 - 施工工作。 Willow Ave - 意外。
狼路/ 16號出口 - 意外。
55th St和Plainfield Rd之間 - 道路施工。
縣農場路和溫德米爾博士之間 - 道路施工。
日內瓦路和聖查爾斯路之間 - 道路施工。
在牛仔路和諾爾伍德路之間 - 道路施工。
Knoll Wood Rd和Jeans Rd之間 - 道路施工。
Lavergne Ave和Roy Ave之間 - 施工工作。
Roy Ave和Lavergne Ave之間 - 施工工程。
聖查爾斯路和日內瓦路之間 - 道路施工。
溫德米爾博士和縣農場路 - 道路施工。

我就喜歡這樣的連字符後字母順序排序它:

在柳樹大道 - 意外。
狼路/ 16號出口 - 意外。
在I-55 - 建設工作。
Lavergne Ave和Roy Ave之間 - 施工工作。
Roy Ave和Lavergne Ave之間 - 施工工程。
55th St和Plainfield Rd之間 - 道路施工。
縣農場路和溫德米爾博士之間 - 道路施工。
日內瓦路和聖查爾斯路之間 - 道路施工。
在牛仔路和諾爾伍德路之間 - 道路施工。
Knoll Wood Rd和Jeans Rd之間 - 道路施工。
聖查爾斯路和日內瓦路之間 - 道路施工。
溫德米爾博士和縣農場路 - 道路施工。

在某些情況下可能有2個hypens像:

在I-55 - 建設工作。

所以我需要說明這一點,我不知道最好的方法來實現這一點。我不知道是否應該嘗試操縱字符串,或者在將其轉換爲字符串之前。我對python非常陌生,因爲Javascript不適合我,所以我將它用於Tasker任務。

任何幫助,指導或輸入是非常感謝!

回答

3

作爲您的密鑰在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)分割你的名單分成2塊,從-最後一個實例分裂。只要您的字符串末尾的狀態不包含連字符,這應該工作。

+0

謝謝,那正是我想要的! – Swatty43

0

你應該看看sorted

sorted(x,key=lambda s: s[s.rfind('-'):]) 

參數key是一個函數,它給出了sorted上比較您的數據進行排序的值。我建議rfind找到最後的-,這不幸的是,假設你的數據的後半部分沒有連字符。使用該索引,返回的數據是從該點到字符串結尾的substr。