我需要一個n
元素的數組,其中每個元素都有2個屬性。替代Python中的二維數組
A.element[0].name="qwe"
A.element[0].age=23
A.element[1].name="www"
A.element[1].age=24
...
A.element[n].name="e"
A.element[n].age=25
是否有另一種不涉及設計類的形式?
我需要一個n
元素的數組,其中每個元素都有2個屬性。替代Python中的二維數組
A.element[0].name="qwe"
A.element[0].age=23
A.element[1].name="www"
A.element[1].age=24
...
A.element[n].name="e"
A.element[n].age=25
是否有另一種不涉及設計類的形式?
您可以使用一個字典數組。
事情是這樣的:
A = [
{'name': 'qwe', 'age': 23},
{'name': 'www', 'age': 24}
]
可以簡化通過做這樣的插入:
A = []
def addPerson(name, age):
global A
A.append({'name': name, 'age': age})
或者只是讓字典成陣列,這樣你就不必指定「名」和'年齡'在每一行。寫一個代表一個人的類(或者其他任何東西)可能會更容易一些。
>>> from collections import namedtuple
>>> Element = namedtuple('Element', 'name age')
>>> A.element[0] = Element('qwe', 23)
>>> print A.element[0].name
qwe
>>> print A.element[0].age
23
但是,這些元組,而不是列表,所以他們不能改變。此外,這些仍然是基本的類,但你只是沒有用class
關鍵字來定義它們。有關詳細說明,請參閱this。
如果使用numpy的,你也可以使用結構數組:
In [66]: struct = np.dtype([("name", np.object), ("age", np.int)])
a = np.array([("abc", 12), ("def", 20), ("xyz", 50)], dtype=struct)
a[0]
Out[66]: ('abc', 12)
In [67]: a[0]["name"]
Out[67]: 'abc'
In [68]: a["name"]
Out[68]: array([abc, def, xyz], dtype=object)
In [69]: a["age"]
Out[69]: array([12, 20, 50])
In [72]: a["age"][2]
Out[72]: 50
我很喜歡,但刪除全局! – tdelaney 2013-02-24 05:21:09