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

2024-04-24 19:39:54 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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


Tags: 数据数据结构类型列表排序字母单词整理
3条回答

您可以使用内置的sorted函数。

print sorted(['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'])

Python有一个名为^{}的内置函数,它将从您提供给它的任何iterable中给您一个排序列表(例如list([1,2,3]);一个dict({1:2,3:4}),尽管它只返回一个排序的键列表;一个set({1,2,3,4);或者一个tuple((1,2,3,4)))。

>>> x = [3,2,1]
>>> sorted(x)
[1, 2, 3]
>>> x
[3, 2, 1]

列表还有一个^{}方法,该方法将就地执行排序(x.sort()只返回x对象,不返回任何结果)。

>>> x = [3,2,1]
>>> x.sort()
>>> x
[1, 2, 3]

两者都采用key参数,该参数应该是可调用的(函数/lambda),您可以使用它来更改排序依据。
例如,要从按值排序的dict中获取(key,value)对的列表,可以使用以下代码:

>>> 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)]

[]表示alist()表示atuple{}表示adictionary。您应该看看official Python tutorial,因为这些是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,那么您可以处理在python2中具有数据类型unicode而不是str的unicode字符串。在这种情况下,如果有unicode字符串列表,则必须编写key=unicode.lower,而不是key=str.lower

相关问题 更多 >