gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 06:40:02 28 4
gpt4 key购买 nike

在开始之前我是菜鸟

因此,我使用 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com