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

Python数据结构按字母顺序排序列表,python,list,sorting,alphabetical,Python,List,Sorting,Alphabetical,我对python中的数据结构有点困惑(),[]和{}。我试图对一个简单的列表进行排序,可能是因为我无法识别数据的类型,而无法对其进行排序 我的清单很简单:['Stem'、'composure'、'Sedge'、'Eflux'、'Whim'、'intercite'] 我的问题是这是什么类型的数据,以及如何按字母顺序对单词进行排序?您正在处理一个python列表,排序与执行此操作一样简单 my_list = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim

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

我的清单很简单:
['Stem'、'composure'、'Sedge'、'Eflux'、'Whim'、'intercite']


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

您正在处理一个python列表,排序与执行此操作一样简单

my_list = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
my_list.sort()

您可以使用内置的排序功能

print sorted(['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'])
[]
表示a,
()
表示a,
{}
表示a。您应该看看,因为这些是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']
请注意:如果使用Python3,则
str
是包含人类可读文本的每个字符串的正确数据类型。但是,如果您仍然需要使用Python2,那么您可能需要处理Python2中数据类型为
unicode
的unicode字符串,而不是
str
。在这种情况下,如果有unicode字符串列表,则必须编写
key=unicode.lower
,而不是
key=str.lower

>a=()
>>> 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']
>>> 
>>>类型(a) >>>a=[] >>>类型(a) >>>a={} >>>类型(a) >>>a=[‘茎’、‘构成’、‘莎草’、‘外流’、‘突发奇想’、‘阴谋’] >>>a.排序() >>>a ['Eflux'、'interace'、'Sedge'、'Stem'、'Whim'、'compose'] >>>
Python有一个名为的内置函数,它将从您提供给它的任何iterable中为您提供一个排序列表(例如列表(
[1,2,3]
);dict(
{1:2,3:4}
,尽管它只返回键的排序列表;set(
{1,2,3,4
);或者tuple(
(1,2,3,4)

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

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

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

ListName.sort()
将按字母顺序排序。您可以在括号中添加
reverse=False/True
以颠倒项目顺序:
ListName.sort(reverse=False)

如果您想对列表进行排序,则可以使用“list=['Stem'、'composure'、'Sedge'、'Eflux'、'Whim'、'circite']list.sort()打印列表”。
[]
包含内置数据类型
列表
,(请参阅)。列表只是一组值(它们可以包含其他iterable对象,即嵌套列表)。
()
包含内置
元组
。它们是不可变的(无法更改)。(请参阅)。和
{}
包含内置的
字典
。与字典(单词)类似,其中“键”是单词,“值”是定义。(请参阅)。这是Ruby的注释吗?使用pymongo
find_one()上的第二个示例)
result从MongoDB数据库中,我得到一个错误:
descriptor'lower'需要一个'str'对象,但收到了一个'unicode'
。结果是一个字符串数组,实现如下:
results['keywords']=sorted(keywords['keywords'],key=str.lower)
。有人知道如何解决这个问题吗?@user1063287很抱歉我的回复太晚了。在您的情况下,您需要编写
key=unicode.lower
而不是
key=str.lower
。这是因为您处理的是unicode字符串,而不是字节字符串。请向官方了解更多信息,尤其是respPython2和Python3之间的显著差异。
>>> x = [3,2,1]
>>> x.sort()
>>> x
[1, 2, 3]
>>> 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)]