Python数据结构按字母顺序sorting列表
我有点困惑在Python的数据结构; ()
, []
和{}
。 我正在尝试整理一个简单的列表,可能因为我无法确定我无法对其进行sorting的数据types。
我的清单很简单: ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
我的问题是这是什么types的数据,以及如何按字母顺序排列单词?
[]
表示一个列表 , ()
表示一个元组 , {}
表示一个字典 。 你应该看看官方的Python教程,因为这些是Python编程的基础。
你有什么是一个string列表。 你可以这样sorting:
In [1]: lst = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'] In [2]: sorted(lst) Out[2]: ['Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim', 'constitute']
正如您所看到的,以大写字母开头的单词优先于以小写字母开头的单词。 如果你想独立地sorting他们,做到这一点:
In [4]: sorted(lst, key=str.lower) Out[4]: ['constitute', 'Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim']
您也可以按照相反的顺序对列表进行sorting:
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,那么对于包含可读文本的每个string, str
都是正确的数据types。 但是,如果您仍然需要使用Python 2,那么您可能会使用Python 2中的unicodestring来处理数据typesunicode
,而不是str
。 在这种情况下,如果你有一个unicodestring的列表,你必须写key=unicode.lower
而不是key=str.lower
。
Python有一个名为sorted
的内build函数,它会给你一个来自任何迭代的sorting列表(例如列表( [1,2,3]
);一个字典( {1:2,3:4}
,但它只是返回键的一个sorting列表;一个集合( {1,2,3,4
);或一个元组( (1,2,3,4)
))。
>>> x = [3,2,1] >>> sorted(x) [1, 2, 3] >>> x [3, 2, 1]
列表也有一个sort
方法,将就地执行sorting。
>>> x = [3,2,1] >>> x.sort() >>> x [3, 2, 1]
两者都有一个key
参数,这个参数应该是一个可调用的(函数/ lambda),你可以用它来改变sorting依据。
例如,要从一个按值sorting的字典中获取(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)]
你正在处理一个python列表,sorting它就像这样简单。
my_list = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'] my_list.sort()
您可以使用内置的sorted
function。
print sorted(['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'])
>>> 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'] >>>
ListName.sort()
将按字母顺序sorting。 您可以在括号中添加reverse=False/True
来颠倒项目的顺序: ListName.sort(reverse=False)