Python - 附加和排序列表

时间:2016-04-19 03:14:35

标签: python list sorting python-3.x

我正在编写一个代码,我试图从命令行中获取argv(i,w或f)。然后使用输入,我想获取整数,浮点或单词列表并执行一些操作。

  1. 用户将在命令行中输入“f”,然后输入浮点列表,其中值将附加到空列表中。然后程序将对float列表进行排序并打印输出结果。
  2. 我希望类似于单词和整数。

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

    这是我到目前为止的代码,但截至目前,一些输入值只是将值附加到空列表中。我错过了什么阻止代码正确执行?

    例如,程序将首先添加程序名称和'w'作为单词:

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

    import sys, re
    
    script, options = sys.argv[0], sys.argv[1:]
    
        a = [] 
    
        for line in options: 
    
            if re.search('f',line):     # 'f' in the command line
                a.append(input()) 
                a.join(sorted(a)) # sort floating point ascending 
                print (a)  
    
    
            elif re.search('w', line):              
                a.append.sort(key=len, reverse=True) # print list in alphabetize order
                print(a) 
    
            else: re.search('i', line)
            a.append(input())   
            ''.join(a)[::-1]  # print list in reverse order
            print (a)  
    

1 个答案:

答案 0 :(得分:1)

试试这个:

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