2013-02-10 55 views
0

我目前正在Python 2.7中開發一個腳本,該腳本從URL中抽取大約50個字符串值並將這些值放入列表中。在Python中構造數據(列表中的列表?)

對於這50個值中的每一個,它們每個都有另外的相關的20個字符串值。

因此,例如,我可以從一個URL「福特」和「寶馬」中捕獲兩個初始值。然後,我會再詢問「福特」以找到相關的模型,如「焦點」和「蒙迪歐」等......

最終,我需要加入這些值來執行進一步的URL查詢(即www.ford。 com/fiesta和www.ford.com/mondeo和www.bmw.com/xxxx)

我想知道什麼是最好的是構造我的數據?我正在考慮創建一個父值的列表,然後爲每個父值創建一個子列表,用列表中的相關值標記父值。

有沒有更好的方法來構造數據?

+0

爲什麼不使用自定義類? – 2013-02-10 21:43:23

+0

我沒有使用自定義類的經驗:-(現在有一個谷歌 – thefragileomen 2013-02-10 21:46:14

+0

只需按照[python教程](http://docs.python.org/2/tutorial/);它是一種OO語言,所以你可以學習如何定義一個類,這很簡單 – 2013-02-10 21:48:24

回答

2

一個友好的建議:保持簡單。 有疑問時請參考Python的禪宗:http://www.python.org/dev/peps/pep-0020/

「簡單勝於複雜」。

我會去列表的字典,甚至更好,一個defaultdicthttp://docs.python.org/2/library/collections.html#collections.defaultdict):

from collections import defaultdict 


cars = defaultdict(list) 

cars["Ford"].append("Mondeo") 
cars["Ford"].append("Focus") 
cars["BMW"].append("SuperCoolModel") 

print cars 

給出:

defaultdict(<type 'list'>, {'BMW': ['SuperCoolModel'], 'Ford': ['Mondeo', 'Focus']}) 
1

我認爲一個面向對象的方法是組織好辦法這種類型的數據,以獲得高度的凝聚力,並使其更容易添加新的功能。例如:

class CarBrand(object): 
    def __init__(self, name): 
     self.name = name 
     self.domain = "http://www.%s.com/" % name.lower() 

class CarModel(object): 
    def __init__(self, name, brand): 
     self.name = name 
     self.brand = brand 
    def url_query(self): 
     return "%s%s" % (self.brand.domain, self.name.lower())