2010-02-28 75 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