我需要一種通過ID號直接訪問類實例的方法。如何通過Python中的類字典直接訪問類實例
正如我試圖解釋here,我導入一個.csv文件,我想爲.csv文件中的每一行創建我的類Person()的實例,另外我希望能夠直接訪問這些文件實例使用已存在於.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()剛剛模塊:
class Person:
def __init__(self, **kwds):
self.__dict__.update(kwds)
現在我有一個我的人員實例列表,即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」。 請記住,我需要多次直接訪問,所以我需要一個非常有效的方式來執行此操作,而不是在列表中搜索某種形式(同時考慮到我的人口中有大約15萬人)。
在我的Person類Person()中實現類似字典特性的東西真是太好了,每個實例的鍵都是唯一標識符。這個唯一的標識符已經存在於我的csv文件中,因此我已經將它作爲每個人的屬性。
非常感謝您的幫助,我們將不勝感激。也請記住我是一個總的python新手(你可能會說...;))
你有沒有考慮過使用數據庫? –