排序字符串列表

时间:2017-11-29 21:50:31

标签: python list sorting

我有一个像这样的字符串列表:

l = ['car58=C:/Files/SB.car58- 094.38.JPG',
     'bike53=C:/Files/SB.bike53- 006.33.JPG',
     'car46=C:/Files/SB.car46- 88.22.JPG',
     'bike12=C:/Files/SB.bike12- 006.33.JPG',
     'acc9=C:/Files/SB.acc9- 006.33.JPG']

我正在尝试使用每个字符串的开头(位置0)对列表进行排序,直到“=”字符,忽略其后的所有字符,以便结果为:

s = ['acc9=C:/Files/SB.acc9- 116.95.JPG',
     'bike12=C:/Files/SB.bike12- 006.33.JPG',
     'bike53=C:/Files/SB.bike53- 002.12.JPG',
     'car46=C:/Files/SB.car46- 88.22.JPG',
     'car58=C:/Files/SB.car58- 094.38.JPG']

编辑: Ajax1234提供的答案解决了我的问题:

s = sorted(l, key=lambda x:x[:x.index('=')])

2 个答案:

答案 0 :(得分:1)

您可以使用.index()

s = [['car58=C:/Files/SB.car58- 094.38.JPG'],
['bike53=C:/Files/SB.bike53- 006.33.JPG'],
['car46=C:/Files/SB.car46- 88.22.JPG'],
['bike12=C:/Files/SB.bike12- 006.33.JPG'],
['acc9=C:/Files/SB.acc9- 006.33.JPG']]
new_s = sorted(s, key=lambda x:x[0][:x[0].index('=')])

输出:

[['acc9=C:/Files/SB.acc9- 006.33.JPG'], ['bike12=C:/Files/SB.bike12- 006.33.JPG'], ['bike53=C:/Files/SB.bike53- 006.33.JPG'], ['car46=C:/Files/SB.car46- 88.22.JPG'], ['car58=C:/Files/SB.car58- 094.38.JPG']]

编辑:list.sort()也会产生所需的输出:

s.sort()
print(s)

输出:

[['acc9=C:/Files/SB.acc9- 006.33.JPG'], ['bike12=C:/Files/SB.bike12- 006.33.JPG'], ['bike53=C:/Files/SB.bike53- 006.33.JPG'], ['car46=C:/Files/SB.car46- 88.22.JPG'], ['car58=C:/Files/SB.car58- 094.38.JPG']]

关于你最近的评论,这应该有效:

s = ['car58=C:/Files/SB.car58- 094.38.JPG', 'bike53=C:/Files/SB.bike53- 006.33.JPG', 'car46=C:/Files/SB.car46- 88.22.JPG', 'bike12=C:/Files/SB.bike12- 006.33.JPG', 'acc9=C:/Files/SB.acc9- 006.33.JPG']
new_s = sorted(s, key=lambda x:x[:x.index('=')])

输出:

['acc9=C:/Files/SB.acc9- 006.33.JPG', 'bike12=C:/Files/SB.bike12- 006.33.JPG', 'bike53=C:/Files/SB.bike53- 006.33.JPG', 'car46=C:/Files/SB.car46- 88.22.JPG', 'car58=C:/Files/SB.car58- 094.38.JPG']

答案 1 :(得分:0)

对列表使用列表的方法sort()进行排序:

l = ['car58=C:/Files/SB.car58- 094.38.JPG',
     'bike53=C:/Files/SB.bike53- 006.33.JPG',
     'car46=C:/Files/SB.car46- 88.22.JPG',
     'bike12=C:/Files/SB.bike12- 006.33.JPG',
     'acc9=C:/Files/SB.acc9- 006.33.JPG']

# sort list in place
l.sort()

print('\n'.join(l))

将打印:

acc9=C:/Files/SB.acc9- 006.33.JPG
bike12=C:/Files/SB.bike12- 006.33.JPG
bike53=C:/Files/SB.bike53- 006.33.JPG
car46=C:/Files/SB.car46- 88.22.JPG
car58=C:/Files/SB.car58- 094.38.JPG