繁体   English   中英

如何加载将用作类属性的文件,这些属性的顺序可以更改

[英]How to load a file that I'll use as class attributes where the order of these attributes can change

我有一个要加载的.csv文件,它包含与足球运动员有关的信息:前三行的示例如下:

name,position,shooting,dribbling
Cristiano Ronaldo,forward,95,88
Lionel Messi,winger,85,92
Eden Hazard,winger,92,95

我还有班级球员:

class Player:
    def __init__(self, name, position, shooting, dribbling):
        self.name = name
        self.position = position
        self.dribbling = dribbling
        self.shooting = shooting

我需要从.csv文件加载数据,然后将其与Player类一起使用。 我的问题是有时可以更改数据的顺序,例如,文件的前两行可能看起来像这样,而不是上面的样子:

position,shooting,name,dribbling
forward,95,Cristiano Ronaldo,88
...

每次正确加载数据的有效方法是什么?

正如h4z3在评论中建议的那样,在这些情况下,dict开箱非常好。 您可以将其与csv模块结合使用。

首先,我们将其放入2个文件meh.csvmeh2.csv

import csv
list_of_players = []    
with open('meh.csv', 'r') as file:
       reader = csv.DictReader(file)
       for line in reader: 
          list_of_players += [Player(**line)]
with open('meh2.csv', 'r') as file:
       reader = csv.DictReader(file)
       for line in reader: 
          list_of_players += [Player(**line)]

结果:

list_of_players[0].name
'Cristiano Ronaldo'
list_of_players[-1].name
'Cristiano Ronaldo'
list_of_players[-2].name
'Eden Hazard'

我使用了一个列表来存储对象,但是您显然可以随意包装它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM