Python-追加和排序列表

Python-追加和排序列表,python,list,sorting,python-3.x,Python,List,Sorting,Python 3.x,我正在编写一个代码,试图从命令行获取argv(I、w或f)。然后使用输入,我想获取整数、浮点或字的列表并执行一些事情 用户将在命令行中输入“f”,然后输入浮点列表,其中的值将附加到空列表中。然后程序将对浮点列表进行排序并打印输出结果 我想对字和整数进行类似的处理 如果输入是单词列表,则输出将按字母顺序打印单词。如果输入是整数列表,则输出将是按相反顺序排列的列表 这是到目前为止我所拥有的代码,但到目前为止,一些输入值只是将这些值附加到空列表中。我遗漏了什么阻止代码正确执行 例如,程序将首先添加程序

我正在编写一个代码,试图从命令行获取argv(I、w或f)。然后使用输入,我想获取整数、浮点或字的列表并执行一些事情

  • 用户将在命令行中输入“f”,然后输入浮点列表,其中的值将附加到空列表中。然后程序将对浮点列表进行排序并打印输出结果
  • 我想对字和整数进行类似的处理

    如果输入是单词列表,则输出将按字母顺序打印单词。如果输入是整数列表,则输出将是按相反顺序排列的列表

    这是到目前为止我所拥有的代码,但到目前为止,一些输入值只是将这些值附加到空列表中。我遗漏了什么阻止代码正确执行

    例如,程序将首先添加程序名和word的“w”:

    $ test.py w
    >>> abc ABC def DEF
    [ABC, DEF,abc,def] # list by length, alphabetizing words 
    
    代码

    试试这个:

    import sys
    option, values = sys.argv[1], sys.argv[2:]
    
    tmp = {
           'i': lambda v: map(int, v),
           'w': lambda v: map(str, v),
           'f': lambda v: map(float, v)
          }
    print(sorted(tmp[option](values)))
    
    输出:

    shell$ python my.py f 1.0 2.0 -1.0
    [-1.0, 1.0, 2.0]
    shell$ 
    
    shell$ python my.py w aa bb cc
    ['aa', 'bb', 'cc']
    shell$ 
    
    shell$ python my.py i 10 20 30
    [10, 20, 30]
    shell$ 
    
    您必须添加必要的错误处理。例如

     >>> float('aa')
     Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
     ValueError: could not convert string to float: aa
     >>> 
    
    浮动('aa') 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 ValueError:无法将字符串转换为浮点值:aa >>>
    非常感谢您!这很有效。你使用字典是最好的选择!
     >>> float('aa')
     Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
     ValueError: could not convert string to float: aa
     >>>