2015-10-14 131 views
1

我有一个任务,其中必须返回包含csv文件中的值的列表。前两个值需要用来计算一个特殊值,使得列表看起来像[(special_value),row [2],row [3],row [4],row [5],row [6]] 。问题是它必须按照special_value的大小排序,经过几个小时的尝试,我似乎无法找到一种方法来做到这一点,每次尝试都会返回一个列表,其中包含每行所计算的special_value行在文件中。我已经尝试了itemgetter(),并使用for循环遍历行。一些代码的样本,我知道它很笨重和混乱。按行中的第一个元素对csv进行排序

os.chdir(r"C:\Users\filepath") 
clean_1 = open("filename","r") 
clean_1 = csv.reader(clean_1) 



for row in clean_1: 

    if len(row[0]) == 5: 
     #code to find special_value 
     special_value = str(special_value) 
    if len(row[0]) == 6: 
     #code to find special_value 
     special_value = str(special_value) 
    list = [[special_value], 
      [row[2]], 
      [row[3]], 
      [row[4]], 
      [row[5]], 
      [row[6]]] 


    print(list) 

也尝试过使用元组,不同变量类型等。

回答

0

newlist = [special_value,行[1] ...行[N]] - 基本上让所有的字段到一个列表和继续使用newlist.append()

然后打印追加新项目到列表或存储的下方,如果你希望它以相反的顺序进行排序,使用反向=真

sorted(newlist, key = lambda x: x[0])

假设0是其中special_value放置

索引
相关问题