我尝试按名称中的字母对列表中的值进行排序:例如,我希望"8a“、"8c”、"8b“、"8d”变成"8a“、"8b”、"8c“、"8d”。这跟钥匙有关吗?
发布于 2016-09-16 00:34:21
如果数据看起来像你的问题中的数据,答案就很简单。如果数据比较复杂,则必须为sort方法提供一个键,该键只包含字母表中的字符。
data = ["34b", "2a5t", "2a5s", "abcd"]
data.sort(key=lambda x: ''.join(c for c in x if c.isalpha()))
print(data)这将为您提供['abcd', '2a5s', '2a5t', '34b']。
如果你想看看构造的密钥是什么样子,你可以像这样检查它:
for value in data:
print(value, ''.join(c for c in value if c.isalpha()))
34b b
2a5t at
2a5s as
abcd abcd发布于 2016-09-16 00:36:37
假设您的格式始终是数字后跟字母,则需要为排序方法提供一个特定的键进行排序:在本例中,您希望按最后一个字符排序。很多其他答案只是按字母顺序对列表进行排序,先用数字,再用字母,而我觉得你只想按字母排序。这是一种可能的方法:
s = ['9d', '12a', '1e']
sorted_s = sorted(s, key=lambda x:x[-1]) # sorts by the last character of every entry这将返回:
['12a', '9d', '1e']发布于 2016-09-16 00:31:24
您可以通过按列表对其进行排序来完成此操作。
list = ["8a", "8c", "8b", "8d"]
list.sort()
print(list)https://stackoverflow.com/questions/39516032
复制相似问题