Python 如何按列表中项目名称的字母顺序对项目进行排序。
我试图按照列表中的值名称中的字母对其进行排序:例如,我希望,[“8a”、“8c”、“8b”、“8d”]变成[“8a”、“8b”、“8c”、“8d”]。这与密钥有关吗?您可以通过按列表对其排序来完成Python 如何按列表中项目名称的字母顺序对项目进行排序。,python,Python,我试图按照列表中的值名称中的字母对其进行排序:例如,我希望,[“8a”、“8c”、“8b”、“8d”]变成[“8a”、“8b”、“8c”、“8d”]。这与密钥有关吗?您可以通过按列表对其排序来完成 list = ["8a", "8c", "8b", "8d"] list.sort() print(list) 您可以通过按列表对其进行排序来实现这一点 list = ["8a", "8c", "8b", "8d"] list.sort() print(list) 这将解决您的问题: _lis
list = ["8a", "8c", "8b", "8d"]
list.sort()
print(list)
您可以通过按列表对其进行排序来实现这一点
list = ["8a", "8c", "8b", "8d"]
list.sort()
print(list)
这将解决您的问题:
_list = ["8a", "8c", "8b", "8d"]
_list.sort()
print _list
输出:
['8a', '8b', '8c', '8d']
这将解决您的问题:
_list = ["8a", "8c", "8b", "8d"]
_list.sort()
print _list
输出:
['8a', '8b', '8c', '8d']
如果数据看起来像你的问题,答案很简单。如果数据更复杂,则必须为
排序
方法提供一个只包含字母表中字符的键
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
如果数据看起来像你的问题,答案很简单。如果数据更复杂,则必须为
排序
方法提供一个只包含字母表中字符的键
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
已经提到了列表的.sort()方法;有一个排序函数,它将列表作为参数,并在不修改列表的情况下返回已排序列表:
>>> mylist = ["8a", "8c", "8b", "8d"]
>>> sorted(list)
['8a', '8b', '8c', '8d']
>>> mylist
['8a', '8c', '8b', '8d']
已经提到了列表的.sort()方法;有一个排序函数,它将列表作为参数,并在不修改列表的情况下返回已排序列表:
>>> mylist = ["8a", "8c", "8b", "8d"]
>>> sorted(list)
['8a', '8b', '8c', '8d']
>>> mylist
['8a', '8c', '8b', '8d']
假设您的格式始终是数字后跟字母,则需要为排序方法指定一个要排序的特定键:在这种情况下,您希望按最后一个字符排序。很多其他答案只是按照字母顺序排列你的列表,后面跟着字母,而我感觉你只想按字母排序。这是一种可能的方法:
s = ['9d', '12a', '1e']
sorted_s = sorted(s, key=lambda x:x[-1]) # sorts by the last character of every entry
这将返回:
['12a', '9d', '1e']
假设您的格式始终是数字后跟字母,则需要为排序方法指定一个要排序的特定键:在这种情况下,您希望按最后一个字符排序。很多其他答案只是按照字母顺序排列你的列表,后面跟着字母,而我感觉你只想按字母排序。这是一种可能的方法:
s = ['9d', '12a', '1e']
sorted_s = sorted(s, key=lambda x:x[-1]) # sorts by the last character of every entry
这将返回:
['12a', '9d', '1e']
尝试按列表中的值名称中的字母对其进行排序
你提到的例子很简单。根据您的要求,下面是使用re.findall()
和sorted()
根据字符串中任意顺序的字母进行排序的代码:
>>> import re
>>> s = ['a9d', '1a2ba', '1e2s', '1b3tr']
>>> sorted(s, key=lambda x: re.findall("[a-zA-Z]+", x))
['1a2ba', 'a9d', '1b3tr', '1e2s'] # Sorted based on: aba, ad, btr, es
尝试按列表中的值名称中的字母对其进行排序
你提到的例子很简单。根据您的要求,下面是使用re.findall()
和sorted()
根据字符串中任意顺序的字母进行排序的代码:
>>> import re
>>> s = ['a9d', '1a2ba', '1e2s', '1b3tr']
>>> sorted(s, key=lambda x: re.findall("[a-zA-Z]+", x))
['1a2ba', 'a9d', '1b3tr', '1e2s'] # Sorted based on: aba, ad, btr, es
这是非常广泛的,很可能这不是你的真实情况,否则
排序(lst)
就可以了。字母总是第二个字符吗?1)这样的列表的结果应该是什么:['9a','6b','3d']?2) 列表中条目的格式总是一个数字加一个字符吗?@Sean:因为你还没有回复@gowrath的澄清,我添加了一个答案,根据列表中的值按其名称中的字母排序,即字符串中的字母的任何顺序这是非常广泛的,这很可能不是你的真实情况,否则sorted(lst)
就可以了。字母总是第二个字符吗?1)像这样的列表的结果应该是什么:['9a','6b','3d']?2) 列表中条目的格式是否总是一个数字后跟一个字符?@Sean:因为您还没有回复@gowrath的澄清,我添加了一个答案,根据列表中的排序值,按其名称中的字母排序,即字母的任何顺序,谢谢。保留变量名“list”只是因为OP就是这么叫的。更正,谢谢。保留变量名“list”只是因为OP就是这么叫的。