2016-06-22 85 views
0

由於我最近開始一個新項目,我被困在「在代碼之前思考」階段。我一直都在做基本編碼,但我真的認爲我現在需要認真規劃如何組織我的腳本產生的結果。它本質上非常簡單:我從Google Earth Engine中提取了一堆衛星數據,包括不同的傳感器,不同的採集模式等等。我想要做的是循環顯示「傳感器列表」 -acquisition_mode「耦合,請求數據,做更多處理,並最終將其保存到變量或文件中。如何在Python中創建嵌套的數據結構?

假設我有以下示例:

sensors = ['landsat','sentinel1'] 
sentinel_modes = ['ASCENDING','DESCENDING'] 
sentinel_polarization = ['VV','VH'] 

最後,我想有某種嵌套的數據結構,其在最高級別具有元素「陸地衛星」和「sentinel1」的;在'landsat'下我會有一個時間和價值矩陣;在'sentinel1'下,我會有不同的模式,然後是數據矩陣。

我一直在考慮有屬性的列表,字典或類,但是我真的無法下定決心,因爲我沒有那麼多的經驗。 在這個階段,我們將非常感謝在正確方向上的一點幫助!

+2

選擇字典(如果您只需要保存值)或對象(如果您還需要*行爲*),因爲鍵/屬性比索引更具可讀性。除此之外,*只是開始寫點東西*,看看它是如何發展的;你可以隨時重構,如果你需要。 – jonrsharpe

+0

我也會用字典作爲最高級別。當你開始編碼而不是抽象地思考時,你會得到更好的想法。 – Dataman

+0

同意。此外,這個網站是一個非常好的地方,只是通過Python來解決編碼思想的問題。查看文檔瞭解更多信息。 http://www.codeskulptor.org/ – terratunaz

回答

4
  • 列表:不要使用列表嵌套和複雜的數據結構。你只是用自己寫的腳碼專門針對你正在使用的確切格式,任何改變或添加都將是殘酷的執行。
  • 詞典:不錯 - 他們會很好地嵌套,你可以使用一個字典,它的值是一個字典來保存有關鍵的命名信息。這可能是最簡單的選擇。
  • 類:如果你需要很多行爲來實現它,類真的非常有用 - 你希望它的字符串以某種方式表示,你希望能夠使用基本操作符來實現某些功能,或者你只是想讓代碼更具可讀性或可重用性。

從那裏,這是你所有的選擇 - 如果你想通過額外的代碼(這對你有好處)寫他們作爲類,做吧!否則,字典會將您帶到需要去的地方。值得注意的是,字典無法做的唯一的事情就是如果你有兩件事應該在字典中的key級別,並且名字相同(Dicts不要做重複)。