问题:Python数据结构按字母顺序排序列表
我对python中的数据结构有些困惑;()
,[]
和{}
。我正在尝试对一个简单的列表进行排序,可能是因为无法识别未能排序的数据类型。
我的清单很简单: ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
我的问题是这是什么类型的数据,以及如何按字母顺序对单词进行排序?
回答 0
[]
表示列表,()
表示元组和{}
表示字典。您应该看一下官方的Python教程,因为这些是Python编程的基础知识。
您所拥有的是一个字符串列表。您可以像这样对它进行排序:
In [1]: lst = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
In [2]: sorted(lst)
Out[2]: ['Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim', 'constitute']
如您所见,以大写字母开头的单词优先于以小写字母开头的单词。如果要独立对它们进行排序,请执行以下操作:
In [4]: sorted(lst, key=str.lower)
Out[4]: ['constitute', 'Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim']
您还可以按以下相反顺序对列表进行排序:
In [12]: sorted(lst, reverse=True)
Out[12]: ['constitute', 'Whim', 'Stem', 'Sedge', 'Intrigue', 'Eflux']
In [13]: sorted(lst, key=str.lower, reverse=True)
Out[13]: ['Whim', 'Stem', 'Sedge', 'Intrigue', 'Eflux', 'constitute']
请注意:如果您使用的是Python 3,那么str
对于每个包含人类可读文本的字符串来说,数据类型都是正确的。但是,如果仍然需要使用Python 2,则可以处理Unicode字符串,其数据类型unicode
为Python 2,而不是str
。在这种情况下,如果您有一个unicode字符串列表,则必须编写key=unicode.lower
而不是key=str.lower
。
回答 1
Python有一个称为的内置函数[1,2,3]
); dict({1:2,3:4}
,尽管它只会返回键的排序列表; set({1,2,3,4
)))提供排序列表。;或元组((1,2,3,4)
))。
>>> x = [3,2,1]
>>> sorted(x)
[1, 2, 3]
>>> x
[3, 2, 1]
列表还具有一种sort
将就地执行排序的方法(x.sort()返回None,但更改x对象)。
>>> x = [3,2,1]
>>> x.sort()
>>> x
[1, 2, 3]
两者都带有一个key
参数,该参数应该是可调用的(函数/ lambda),可用于更改排序依据。
例如,(key,value)
要从按值排序的字典中获取-pairs 列表,可以使用以下代码:
>>> x = {3:2,2:1,1:5}
>>> sorted(x.items(), key=lambda kv: kv[1]) # Items returns a list of `(key,value)`-pairs
[(2, 1), (3, 2), (1, 5)]
回答 2
您正在处理python列表,对它进行排序就很容易。
my_list = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
my_list.sort()
回答 3
您可以使用内置sorted
功能。
print sorted(['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'])
回答 4
ListName.sort()
将按字母顺序排序。您可以reverse=False/True
在方括号中添加以反转项目顺序:ListName.sort(reverse=False)
回答 5
>>> a = ()
>>> type(a)
<type 'tuple'>
>>> a = []
>>> type(a)
<type 'list'>
>>> a = {}
>>> type(a)
<type 'dict'>
>>> a = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
>>> a.sort()
>>> a
['Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim', 'constitute']
>>>