在开始之前我是菜鸟
因此,我使用 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 属性对这些对象进行排序,但我不知道该怎么做,请帮忙,谢谢。
最佳答案
您可以将sorted
与key
一起使用
sorted_list=sorted(listofcustomers,key=lambda x: x.get_fname())
要检查结果,您可以使用您实现的方法打印信息:
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.
关于python - 使用 CSV 数据对对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59495065/