【问题标题】:sorting in csv by first element in row按行中的第一个元素在csv中排序
【发布时间】:2016-01-12 13:33:20
【问题描述】:

我有一个任务,我必须返回一个包含来自 csv 文件的值的列表。前 2 个值需要用于计算特殊值,使得列表看起来像 [(special_value),row[2],row[3],row[4],row[5],row[6]] .问题是它必须按 special_value 的大小排序,经过数小时的尝试,我似乎无法找到一种方法,每次尝试只返回一个行列表,其中包含从每一行计算的 special_value,如发现在文件中。我已经尝试过 itemgetter(),并且一直在使用 for 循环遍历行。一些代码的示例,我知道这些代码很笨拙。

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)

还尝试使用元组、不同的变量类型等。

【问题讨论】:

    标签: python list sorting csv


    【解决方案1】:

    newlist = [special_value, row[1]... row[n]] - 基本上将所有字段放入列表中,并使用 newlist.append() 继续将新项目附加到列表中

    然后打印或存储以下内容,如果您希望它以相反的顺序排序,请使用reverse=True

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

    假设 0 是放置 special_value 的索引

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-17
      相关资源
      最近更新 更多