首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何按项目名称中的字母顺序对列表中的项目进行排序。

如何按项目名称中的字母顺序对列表中的项目进行排序。
EN

Stack Overflow用户
提问于 2016-09-16 00:27:01
回答 6查看 71关注 0票数 0

我尝试按名称中的字母对列表中的值进行排序:例如,我希望"8a“、"8c”、"8b“、"8d”变成"8a“、"8b”、"8c“、"8d”。这跟钥匙有关吗?

EN

回答 6

Stack Overflow用户

发布于 2016-09-16 00:34:21

如果数据看起来像你的问题中的数据,答案就很简单。如果数据比较复杂,则必须为sort方法提供一个键,该键只包含字母表中的字符。

代码语言:javascript
复制
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']

如果你想看看构造的密钥是什么样子,你可以像这样检查它:

代码语言:javascript
复制
for value in data:
    print(value, ''.join(c for c in value if c.isalpha()))

34b b
2a5t at
2a5s as
abcd abcd
票数 3
EN

Stack Overflow用户

发布于 2016-09-16 00:36:37

假设您的格式始终是数字后跟字母,则需要为排序方法提供一个特定的键进行排序:在本例中,您希望按最后一个字符排序。很多其他答案只是按字母顺序对列表进行排序,先用数字,再用字母,而我觉得你只想按字母排序。这是一种可能的方法:

代码语言:javascript
复制
 s = ['9d', '12a', '1e']
 sorted_s = sorted(s, key=lambda x:x[-1])   # sorts by the last character of every entry

这将返回:

代码语言:javascript
复制
['12a', '9d', '1e']
票数 1
EN

Stack Overflow用户

发布于 2016-09-16 00:31:24

您可以通过按列表对其进行排序来完成此操作。

代码语言:javascript
复制
list = ["8a", "8c", "8b", "8d"] 
list.sort()
print(list)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39516032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档