我对python中的数据结构有点困惑;()
, []
, 和{}
. 我正在尝试对一个简单的列表进行排序,可能是因为我无法识别我无法对其进行排序的数据类型。
我的清单很简单:['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
我的问题是这是什么类型的数据,以及如何按字母顺序对单词进行排序?
我对python中的数据结构有点困惑;()
, []
, 和{}
. 我正在尝试对一个简单的列表进行排序,可能是因为我无法识别我无法对其进行排序的数据类型。
我的清单很简单:['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
我的问题是这是什么类型的数据,以及如何按字母顺序对单词进行排序?
[]
表示一个列表,()
表示一个元组,{}
表示一个字典。你应该看看官方的 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
Python 2 中数据类型的 unicode 字符串,而不是str
. 在这种情况下,如果你有一个 unicode 字符串列表,你必须写key=unicode.lower
而不是key=str.lower
.
sorted
Python有[1,2,3]
一个内置的{1:2,3:4}
函数{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)
要从按值排序的 dict 中获取 -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)]
您正在处理一个 python 列表,对其进行排序就像这样做一样简单。
my_list = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
my_list.sort()
您可以使用内置sorted
功能。
print sorted(['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'])
ListName.sort()
将按字母顺序对其进行排序。您可以reverse=False/True
在括号中添加以颠倒项目的顺序:ListName.sort(reverse=False)
>>> 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']
>>>