我对python中的数据结构有点困惑; (),[]和{}.我试图找出一个简单的列表,可能因为我无法识别我无法对其进行排序的数据类型.
我的清单很简单: ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
我的问题是这是什么类型的数据,以及如何按字母顺序对单词进行排序?
sort()Python使用的内置方法是什么算法?是否可以查看该方法的代码?
我在使用来自不同语言的文本的应用程序,因此,为了查看或报告目的,某些文本(字符串)需要以特定语言进行排序.
目前我有一个解决方法搞乱全局区域设置,这是不好的,我不想把它投入生产:
default_locale = locale.getlocale(locale.LC_COLLATE)
def sort_strings(strings, locale_=None):
if locale_ is None:
return sorted(strings)
locale.setlocale(locale.LC_COLLATE, locale_)
sorted_strings = sorted(strings, cmp=locale.strcoll)
locale.setlocale(locale.LC_COLLATE, default_locale)
return sorted_strings
Run Code Online (Sandbox Code Playgroud)
官方python语言环境文档明确说明保存和恢复是一个坏主意,但没有给出任何建议:http://docs.python.org/library/locale.html#background-details-hints-tips-and-caveats
程序必须按字母顺序打印8个元素中的最后一个名称.名称/单词可以通过代码以任何方式输入.我想我应该在in range()这里使用列表.我有一个想法是将输入名称的第一个/第二个/第三个/ ...字母与前一个字母进行比较,然后将其放在列表的末尾或前一个的前面(取决于比较),然后重复下一个名称.最后,程序将打印列表的最后一个成员.
我的Python字符串列表类似x但足够长:
x = ['aaa','ab','aa','c','a','b','ba']
Run Code Online (Sandbox Code Playgroud)
我想对此列表进行排序为: ['a', 'b', 'c', 'aa', 'ab', 'ba', 'aaa']和我一样在以下2步:
>>> x.sort()
>>> x.sort(key=len)
>>> x
['a', 'b', 'c', 'aa', 'ab', 'ba', 'aaa']
Run Code Online (Sandbox Code Playgroud)
但我需要一步到位:我还使用lambda函数绑定(采取帮助):
>>> x.sort(key=lambda item: (item, len(item)))
>>> x
['a', 'aa', 'aaa', 'ab', 'b', 'ba', 'c']
Run Code Online (Sandbox Code Playgroud)
但不是我想要的:
有可能一步到位吗?让我开心.
我的Python:
~$ python --version
Python 2.6.6
Run Code Online (Sandbox Code Playgroud) 我有一个字符串列表,list并希望按字母顺序排序.当我调用list.sort()列表的第一部分包含以字母顺序排序的大写字母开头的条目时,第二部分包含以小写字母开头的排序条目.像这样:
Airplane
Boat
Car
Dog
apple
bicycle
cow
doctor
Run Code Online (Sandbox Code Playgroud)
我google了一个答案,但没有找到一个有效的算法.我读到的locale模块和sort参数cmp和key.通常会有这种lambda情况连续发生sort,这让我无法理解.
我怎样才能得到:
list = ['Dog', 'bicycle', 'cow', 'doctor', 'Car', 'Boat', 'apple', 'Airplane']
Run Code Online (Sandbox Code Playgroud)
至:
Airplane
apple
bicycle
Boat
Car
cow
doctor
Dog
Run Code Online (Sandbox Code Playgroud)
应考虑外语的特征(如ä,é,î).
我有以下代码:
v = ['zack', 'timor', 'Topher']
v.sort()
print(v)
Run Code Online (Sandbox Code Playgroud)
['托弗','帝汶','扎克']
我想得到的是:
['帝汶','托弗','扎克']
这是正确的字母顺序。
基本上它应该忽略小写字母和大写字母之间的区别。我不能只做 lower() 因为['timor','topher', 'zack']不是想要的输出。
简单来说,我希望它与此规则进行比较: a=A, b=B, ...
我该怎么做?
sort()的返回值为None,因此以下代码不起作用:
def sorted_unique_items(a):
return list(set(a)).sort()
Run Code Online (Sandbox Code Playgroud)
想要更好的解决方案吗?