Python数据结构按字母顺序排序

icy*_*ypy 140 python sorting list alphabetical

我对python中的数据结构有点困惑; (),[]{}.我试图找出一个简单的列表,可能因为我无法识别我无法对其进行排序的数据类型.

我的清单很简单: ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']

我的问题是这是什么类型的数据,以及如何按字母顺序对单词进行排序?

pem*_*ahl 204

[]表示列表,()表示元组{}表示字典.您应该查看官方Python教程,因为这些是Python编程的基础知识.

你有一个字符串列表.你可以这样排序:

In [1]: lst = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']

In [2]: sorted(lst)
Out[2]: ['Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim', 'constitute']
Run Code Online (Sandbox Code Playgroud)

如您所见,以大写字母开头的单词优先于以小写字母开头的单词.如果要对它们进行独立排序,请执行以下操作:

In [4]: sorted(lst, key=str.lower)
Out[4]: ['constitute', 'Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim']
Run Code Online (Sandbox Code Playgroud)

您还可以通过执行以下操作以相反的顺序对列表进行排序:

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']
Run Code Online (Sandbox Code Playgroud)

请注意:如果您使用Python 3,那么str对于包含人类可读文本的每个字符串,它是正确的数据类型.但是,如果您仍然需要使用Python 2,那么您可能会处理具有unicodePython 2中数据类型的unicode字符串,而不是str.在这种情况下,如果您有一个unicode字符串列表,则必须编写key=unicode.lower而不是key=str.lower.


Teo*_*zon 29

Python有一个内置函数调用sorted,它会从你提供的任何迭代中给你一个排序列表(例如list([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]
Run Code Online (Sandbox Code Playgroud)

列表还有一个sort将就地执行排序的方法(x.sort()返回None但更改x对象).

>>> x = [3,2,1]
>>> x.sort()
>>> x
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

两者都有一个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)]
Run Code Online (Sandbox Code Playgroud)


Fat*_*kli 9

您可以使用内置sorted功能.

print sorted(['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'])
Run Code Online (Sandbox Code Playgroud)


Bry*_*yan 8

你正在处理一个python列表,并对它进行排序就像这样做一样简单.

my_list = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
my_list.sort()
Run Code Online (Sandbox Code Playgroud)


Cra*_*800 5

ListName.sort()会按字母顺序排序。您可以添加reverse=False/True括号来反转项目的顺序:ListName.sort(reverse=False)