Python-按字母顺序排列单词

Python-按字母顺序排列单词,python,list,range,alphabetical,Python,List,Range,Alphabetical,程序必须按字母顺序打印8个元素中最后一个元素的名称。 可以通过代码以任何方式输入名称/单词。 我想我应该在这里使用列表和范围()。我有一个比较第一个/第二个/第三个的想法。。。输入名称的字母与前一个名称的字母,然后将其放在列表的末尾或前一个名称的前面(取决于比较),然后对下一个名称重复该操作。最后,程序将打印列表中的最后一个成员。默认情况下,Python的字符串比较是词法比较,因此您应该能够调用max,并且不受影响: In [15]: sentence Out[15]: ['this', 'is

程序必须按字母顺序打印8个元素中最后一个元素的名称。 可以通过代码以任何方式输入名称/单词。
我想我应该在这里使用列表和
范围()。我有一个比较第一个/第二个/第三个的想法。。。输入名称的字母与前一个名称的字母,然后将其放在列表的末尾或前一个名称的前面(取决于比较),然后对下一个名称重复该操作。最后,程序将打印列表中的最后一个成员。

默认情况下,Python的字符串比较是词法比较,因此您应该能够调用
max
,并且不受影响:

In [15]: sentence
Out[15]: ['this', 'is', 'a', 'sentence']
In [16]: max(sentence)
Out[16]: 'this'
当然,如果要手动执行此操作,请执行以下操作:

In [16]: sentence
Out[16]: ['this', 'is', 'a', 'sentence']

In [17]: answer = ''

In [18]: for word in sentence:
   ....:     if word > answer:
   ....:         answer = word
   ....:         

In [19]: print answer
this
或者你可以对你的句子进行排序:

In [20]: sentence
Out[20]: ['this', 'is', 'a', 'sentence']

In [21]: sorted(sentence)[-1]
Out[21]: 'this'
或者,将其反向排序:

In [25]: sentence
Out[25]: ['this', 'is', 'a', 'sentence']

In [26]: sorted(sentence, reverse=True)[0]
Out[26]: 'this'
但是,如果您想完全手动(这非常痛苦):

使用
sort()
方法

strings = ['c', 'b', 'a']
strings.sort()
print strings
产量将是,

['a', 'b', 'c']
如果需要最后一个,可以使用
max()
方法。

在python中,sort()方法按字母顺序对所有字符串进行排序,以便使用该函数

strings = ['c', 'b', 'a']
strings.sort()
print strings
你可以列出你所有的单词,然后:

  listName.sort()

这将产生一个按字母顺序排序的列表

如果你有大写和小写的混合词,你可以这样做:

from string import capwords     

words = ['bear', 'Apple', 'Zebra','horse']

words.sort(key = lambda k : k.lower())

answer = words[-1]
结果:

>>> answer
'Zebra'
>>> words
['Apple', 'bear', 'horse', 'Zebra']

如前一个答案所述,默认情况下字符串比较是词法比较,因此可以使用
min()
max()
。要处理大小写单词,可以指定
key=str.lower
。例如:

s=['This', 'used', 'to', 'be', 'a', 'Whopping', 'Great', 'sentence']
print min(s), min(s, key=str.lower)
# Great a

print max(s), max(s, key=str.lower)
# used Whopping

只需使用以下命令:

max(sentence.lower().split())

我会这样做的

  • 定义字符串:为了参数起见,让我们假设字符串已经预定义

    sentence = "This is the sentence that I need sorted"
    
  • 使用
    split()。我在这里松散地使用术语“word”,因为该方法没有“word”的概念,它只是通过解析以空格分隔的字符将
    句子
    字符串分隔成一个列表,并将这些字符作为列表中的离散项输出。此列表尚未按字母顺序排列

    split_sentence = sentence.split()
    
  • 使用
    sorted
    函数:
    排序函数返回按字母顺序排列的
    拆分句子列表

     sorted_sentence = sorted(split_sentence)
    
  • 打印列表中的最后一个元素:

    print(sorted_sentence[-1])
    

  • 这是一个你必须以特定方式进行的练习,还是你可以按照已经给出的答案中的建议使用
    sort
    max
    ?我现在不想写一个完整的答案,但是您应该记住,建议使用
    max
    sort
    的答案不一定能正确处理大小写,因为它们是按大小写排序的(因此
    A
    B
    ,而
    A
    B
    )。因此,您可以始终使用大写或小写。下面是一个如何使用特定区域设置按字母顺序正确排序的示例:为什么要使用
    string.capwords
    ,而不仅仅是
    s.lower()
    s.upper()
    ?@abarnert,没有真正的原因。我看到
    s.lower()
    s.upper()
    的优点是,您不需要导入任何模块(
    string
    ),您知道其他优点吗?比较
    s.lower()
    是进行不区分大小写(ASCII)比较的典型方法;使用一个鲜为人知的函数,以至于他们选择不将其作为
    str
    方法添加,这意味着人们将不得不考虑代码,而不是立即识别它的功能(而自动重构工具根本不会识别它)。你听说过“TOOWTDI”吧?还有一些小的优势-
    较低的
    也更有可能在不同的Python实现上进行优化,它更容易阅读(一个单词告诉你它做什么,而不是两个,其中一个是不相关的),等等+1。在所有答案中,这是最简洁的,它直接回答了OP的问题,并解释了它为什么有效。但是,如果要处理非ASCII字母的大小写混合词,您可能需要添加一些关于
    locale.collate
    print(sorted_sentence[-1])