作爲一種習慣python的方式,我試圖從Autohotkey_L將我的一些代碼翻譯成python。
我馬上遇到了大量的收集對象的選擇。
你能幫我找出一個內置類型或第三方貢獻類型,儘可能多的,AutoHotkey_L object type及其methods的功能。
什麼是靈活的混合python集合對象?
AutoHotkey_L對象具有python字典,列表和類實例的功能。
據我所知,有空間和速度的權衡,但我在功能,而不是優化的問題只是感興趣。
作爲一種習慣python的方式,我試圖從Autohotkey_L將我的一些代碼翻譯成python。
我馬上遇到了大量的收集對象的選擇。
你能幫我找出一個內置類型或第三方貢獻類型,儘可能多的,AutoHotkey_L object type及其methods的功能。
什麼是靈活的混合python集合對象?
AutoHotkey_L對象具有python字典,列表和類實例的功能。
據我所知,有空間和速度的權衡,但我在功能,而不是優化的問題只是感興趣。
不要將Python編寫爲<another-language>
。把Python寫成Python。
的數據結構應選擇正好有你需要使用最少的能力。
list
- 一個有序元素的序列,具有1個柔性端。collections.deque
- 元素的有序序列,用2周的柔性端(例如,隊列)。set
/frozenset
- 一個無序序列獨特元素。collections.Counter
- 一個無序序列非唯一元素。dict
- 一個無序鍵值關係。collections.OrderedDict
- 一個有序鍵值關係。bytes
/bytearray
- 字節的列表。array.array
- 原始類型的同質列表。望着對象的接口,
dict
將是最適合於關鍵collections.OrderedDict
找到一個值將是最適合推/流行的東西。(如紅黑樹)是必需的。標準庫中沒有這種類型,但有3rd party implementations。
如果不知道你打算如何使用它,將不可能推薦一個特定的類。如果您將此特定對象用作可重複元素的有序序列,則應使用列表;如果您正在通過鍵查找值,則使用字典。對於不同的數據類型,您將得到非常不同的算法運行時複雜性。它確實不需要很多時間來確定何時使用哪種類型....我建議你給它一些進一步的考慮。
如果你真的不能確定,不過,這裏有一個可能性:
class AutoHotKeyObject(object):
def __init__(self):
self.list_value = []
self.dict_value = {}
def getDict(self):
return self.dict_value
def getList(self):
return self.list_value
通過上述,您可以同時使用列表和詞典功能,像這樣:
obj = AutoHotKeyObject()
obj.getList().append(1)
obj.getList().append(2)
obj.getList().append(3)
print obj.getList() # Prints [1, 2, 3]
obj.getDict()['a'] = 1
obj.getDict()['b'] = 2
print obj.getDict() # Prints {'a':1, 'b':2}
這裏也有一些有趣的想法:http://stackoverflow.com/questions/1338714/accesing-dictionary-with-class-atribute。我還希望能夠將列表處理應用到他們描述的字典/類「羣」。 – Naveen 2010-05-30 07:40:00
「list」有什麼特點? – kennytm 2010-05-30 07:15:53
object._insert和object._remove在對象的末尾推送並彈出。對象項可以是對象,並且是可變的。 – Naveen 2010-05-30 07:20:35