我需要一种通过 ID 号直接访问类实例的方法。
正如我试图在这里解释的那样,我正在导入一个 .csv 文件,并且我想为 .csv 文件中的每一行创建我的类 Person() 的实例,另外我希望能够使用 as 直接访问这些实例key 一个唯一标识符,已经存在于 .csv 文件中。
感谢 user433831 的帮助,到目前为止我所做的是:
from sys import argv
from csv import DictReader
from person import Person
def generateAgents(filename):
reader = DictReader(open(filename, 'rU'))
persons = [Person(**entry) for entry in reader]
return persons
其中 person 只是我将类 Person() 定义为的模块:
class Person:
def __init__(self, **kwds):
self.__dict__.update(kwds)
现在我有一个我的 person 实例的列表,即persons
,这已经很整洁了。但是现在我需要使用该networkx
模块在这些人之间创建一个网络,并且我肯定需要一种直接访问每个人的方法(目前我的实例没有任何名称)。
例如,每个人都有一个名为“father_id”的属性,这是父亲的唯一 ID。当前人口中没有父亲在世的人的“father_id”等于“-1”。
现在,要将每个人与他/她的父亲联系起来,我会这样做:
import networkx as nx
G=nx.Graph()
for person in persons:
G.add_edge(person, person_with_id_equal_to_father_id)
我的问题是我无法直接访问这个“person_with_id_equal_to_father_id”。请记住,我需要多次执行此直接访问,因此我需要一种非常有效的方法,而不是在列表中进行某种形式的搜索(同时考虑到我的人口中有大约 150000 人) .
在我的类 Person() 中实现类似字典功能的东西会很棒,每个实例的键都是唯一标识符。这个唯一标识符已经存在于我的 csv 文件中,因此我已经将它作为每个人的属性。
感谢您的任何帮助,一如既往地非常感谢。另外请记住我是一个完全的python新手(你可能会说......;))