2010-02-28 85 views
4

我寫了一些,我需要將一個複雜的數據結構傳遞給一些函數。如何簡化在Python中創建巨大的數據結構

的數據結構是這樣的:

{ 'animals': [ 'cows', 'moose', { 'properties': [ 9, 26 ] } ] 
    'fruits': { 
    'land': [ 'strawberries', 'other berries' ], 
    'space': [ 'apples', 'cherries' ] 
    } 
} 

這種結構看起來很醜陋給我。你能想出如何簡化寫這種海量數據結構的方法嗎?

PS。我編造了這個結構,但是我的真實結構非常相似。

+0

它有什麼問題?列表和詞典的字典並沒有真正的問題。你擔心什麼?它出什麼問題了? – 2010-02-28 21:46:29

+0

你必須更詳細地描述你的程序。屬性[9,26]是動物的屬性嗎? – 2010-02-28 21:51:29

+0

'['cows','moose',{'properties':[9,26]}]'是不合需要的。當所有元素共享相同類型(或至少具有相同的鴨式屬性)時列出獲得力量。 – unutbu 2010-02-28 21:51:58

回答

5

其他語言將解決這個問題,對象或structs--左右,是這樣的:

class whatever: 
    animals = AnimalObject() 
    fruits = FruitObject() 

class AnimalObject: 
    animals = ['cows','moose'] 
    properties = [9,26] 

class FruitObject: 
    land = ['strawberries', 'other berries'] 
    space = ['apples', 'cherries'] 

當然,這隻有在您事先知道數據將採取何種形式時纔有效。如果你不這樣做,那麼地圖/列表是你唯一的選擇;-)

2
  1. 使用對象。你正在使用字符串和字典等基本類型,而對象更強大。
  2. 使用函數參數。你可以在你的字典裏通過第一級密鑰作爲參數傳遞給你的函數:
 
def yourfunction(animals, fruits) 
    # do things with fruits and animals 
    pass 
+0

或者他可以離開他的結構,並將其作爲'yourfunction(* his_variable)' – voyager 2010-02-28 21:59:59

+0

@voyager在我看來不那麼表現力 – 2010-02-28 22:15:08

相關問題