我对一般的代码和Python相当陌生,我正在努力学习它,所以我为任何绿色错误提前道歉。我的目标是读取CSV文件并对数据进行排序。我认为使用类是最好的,但我可能错了。CSV文件的格式如下。你知道吗
A,1,2,3
B,3,2,1
C,2,1,3
D,2,3,1
E,1,3,2
F,3,1,2
每一行都是一个新项目,第一个字母是名称,数字是我希望字母排序的依据。实际的数据会有点不同,比如名字不会只是一个字母,但格式不会改变。我不知道如何应用我创建的类并对其进行排序。以下是我目前的代码:
class art:
def __init__(self, name, c1, c2, c3):
self.name = name
self.c1 = c1
self.c2 = c2
self.c3 = c3
def __repr__(self):
return repr((self.name, self.c1, self.c2, self.c3))
data = open('c:/tempdata/test_sort_data.csv', 'r')
f = data.read()
print f
我计划使用排序函数,就像这样:
sorted(f, key=lambda art: art.c1)
我只是使用print f
检查并确保数据被正确读取。当我完成时,我只想打印排序后的列表。我最终想使用多个参数,所有三个数字来运行一个更复杂的排序,但是我现在根本不知道如何对它进行排序,我不知道如何调用它,因为我不知道如何将我的数据格式化到类中。我也不坚决使用类,它只是目前看起来最干净的方式。任何帮助都会有帮助。你知道吗
要将每一行转换为
Art
实例(注意类名的大写约定),可以执行以下操作:在排序方面,您可以在类中实现比较“魔术方法”:
现在您可以使用
sorted(instances)
。你知道吗在这种情况下,使用类只有在您不只是保存数据和对csv文件中的行进行排序的情况下才有意义。例如,您可以在不使用类的情况下对数据进行几行排序:
但是如果您需要一种更复杂的方法来排序条目,那么您可以定义一个在
data.sort
方法中使用的特定函数,而不是使用lambda
表达式。你知道吗如果您除了对数据进行排序之外什么都不做,那么我认为您不需要经历定义类的“麻烦”。你知道吗
相关问题 更多 >
编程相关推荐