什么是灵活的混合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