python - 使用 CSV 数据对对象进行排序

标签 python python-3.x csv sorting object

在开始之前我是菜鸟

因此,我使用 CSV 文件中的数据创建了对象,该文件的格式为“doe,john,m,20”,如下所示:

class FitClinic:
    def __init__(self, lname, fname, gender, age):
        self.__lname = lname
        self.__fname = fname
        self.__gender = gender
        self.__age = age

    def __del__(self):
        print("Customer has been deleted")

    def set_lname(self):
        pass

    def get_lname(self):
        return self.__lname

    def set_fname(self):
        pass

    def get_fname(self):
        return self.__fname

    def set_gender(self):
        pass

    def get_gender(self):
        return self.__gender

    def set_age(self):
        pass

    def get_age(self):
        return self.__age

fh=open('fit_clinic_20.csv', 'r')
fh.seek(3)
listofcustomers=[]
for row in fh:
    c = row.split(",")
    listofcustomers.append(FitClinic(c[0], c[1], c[2], c[3:]))

我需要做的是按 fname 属性对这些对象进行排序,但我不知道该怎么做,请帮忙,谢谢。

最佳答案

您可以将sortedkey一起使用

sorted_list=sorted(listofcustomers,key=lambda x: x.get_fname())

引用Sorting HOW TO

要检查结果,您可以使用您实现的方法打印信息:

for x in sorted_list:
    print(x.get_fname())

在更复杂的情况下,根据 @Maurice Reeves 的建议,您还可以添加 __str____repr__ 方法。

def __str__(self):
    str_to_print=f'lname:{self.__lname},'
    str_to_print+=f'fname:{self.__fname},'
    str_to_print+=f'gender:{self.__gender},'
    str_to_print+=f'age:{self.__age}'
    return str_to_print

__repr__=__str__

然后您可以通过以下方式打印:

for x in sorted_list:
     print(x)

引用Python doc .

顺便说一句,您可以使用pandas方便地加载csv文件。

import pandas
csv_pd=pandas.read_csv('fit_clinic_20.csv')
csv_pd.sort_values(by=['fname']) # If fname is the head of your csv file. If not, just add it.

引用pandas.DataFrame.sort_values

关于python - 使用 CSV 数据对对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59495065/

相关文章:

python - python 中的特征向量给出了看似随机的元素符号

python - 如何自动识别 python 代码中的加密最佳实践

python - 将函数应用于 Spark DataFrame 中的所有单元格

python - 从另一个应用程序内部调用 Pyramid 框架应用程序

python - 命令帮助(通过 -h) 其中 `argparse` 是范围检查输入端口号

python - 在 TensorFlow 中多次初始化变量会导致内存泄漏

python - 如何使树莓派之间的通信代码成为多线程?

python - 使用 csv.DictReader 创建嵌套字典

php - fputcsv - 只有一列

php - mysql 中 csv 批量插入的限制