2007年05月17日 星期四 20:57
hi all 我需要做一个有list的可顺序写入,顺序遍历特点的参数+对应值的数据结构 根据c++的思维,我用了两个list,根据顺序使两个list中的值保持一一对应,并且封装了一些操作接口. 不过总觉得不够简洁,是否有更好的方法呢 -- with kind regards
2007年05月17日 星期四 21:08
ÖØÔØkeyµÄµü´ú½Ó¿Ú¾Í¿ÉÒÔÁË¡£ ÔÚ07-5-17£¬ro <rosettas在gmail.com> дµÀ£º > > hi all > > ÎÒÐèÒª×öÒ»¸öÓÐlistµÄ¿É˳ÐòдÈë,˳Ðò±éÀúÌصãµÄ²ÎÊý+¶ÔÓ¦ÖµµÄÊý¾Ý½á¹¹ > ¸ù¾Ýc++µÄ˼ά,ÎÒÓÃÁËÁ½¸ölist,¸ù¾Ý˳ÐòʹÁ½¸ölistÖеÄÖµ±£³ÖÒ»Ò»¶ÔÓ¦,²¢ÇÒ·â×°ÁËһЩ²Ù×÷½Ó¿Ú. > > ²»¹ý×ܾõµÃ²»¹»¼ò½à,ÊÇ·ñÓиüºÃµÄ·½·¨ÄØ > > -- > with kind regards > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese -- µÇɽÕßÈ¥µÇɽ£¬ÒòΪɽÔÚÄÇÀï ÎÒÔÚ˼¿¼£¬ÒòΪÎÊÌâÔÚÄÇÀï ÁõöÎ March.Liu -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20070517/846ecde6/attachment.html
2007年05月17日 星期四 21:15
On 5/17/07, 刘鑫 <march.liu在gmail.com> wrote: > 重载key的迭代接口就可以了。 > 不大明白 -- with kind regards
2007年05月17日 星期四 21:41
On 5/17/07, ro <rosettas at gmail.com> wrote: > > hi all > > 我需要做一个有list的可顺序写入,顺序遍历特点的参数+对应值的数据结构 > 根据c++的思维,我用了两个list,根据顺序使两个list中的值保持一一对应,并且封装了一些操作接口. > > 不过总觉得不够简洁,是否有更好的方法呢 怀疑你所要的就是一个 OrderedDict。 顺手写个两个实现,后面那个类似你用的方法,用两个列表: class OrderedDict(dict): ''' >>> d = dict() >>> d['a']=1 >>> d['b']=2 >>> d['c']=3 >>> d.items() [('a', 1), ('c', 3), ('b', 2)] >>> d = OrderedDict() >>> d['a'] = 1 >>> d['b'] = 2 >>> d['c'] = 3 >>> list(d.items()) [('a', 1), ('b', 2), ('c', 3)] ''' def __init__(self, *args, **kw): super(OrderedDict, self).__init__(*args, **kw) self.ordered_keys = self.keys() def __setitem__(self, key, value): if not key in self: self.ordered_keys.append(key) super(OrderedDict, self).__setitem__(key, value) def items(self): for key in self.ordered_keys: yield key, self[key] class DoubleList(object): ''' >>> d = dict() >>> d['a']=1 >>> d['b']=2 >>> d['c']=3 >>> d.items() [('a', 1), ('c', 3), ('b', 2)] >>> d = DoubleList() >>> d['a'] = 1 >>> d['b'] = 2 >>> d['c'] = 3 >>> list(d.items()) [('a', 1), ('b', 2), ('c', 3)] ''' def __init__(self): self.keys = [] self.values = [] def __setitem__(self, key, value): if not key in self.keys: self.keys.append(key) self.values.append(value) else: index = self.keys.find(key) self.values[index]=value def __getitem__(self, key): index = self.keys.find(key) return self.values[index] def items(self): for i in range(len(self.keys)): yield self.keys[i], self.values[i] if __name__ == '__main__': import doctest doctest.testmod() -- http://codeplayer.blogspot.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://python.cn/pipermail/python-chinese/attachments/20070517/e2b74d32/attachment-0001.htm
2007年05月18日 星期五 08:25
On 5/17/07, 黄毅 <yi.codeplayer在gmail.com> wrote: > On 5/17/07, ro <rosettas在gmail.com> wrote: > > hi all > > > > 我需要做一个有list的可顺序写入,顺序遍历特点的参数+对应值的数据结构 > > 根据c++的思维,我用了两个list,根据顺序使两个list中的值保持一一对应,并且封装了一些操作接口. > > > > 不过总觉得不够简洁,是否有更好的方法呢 > > 怀疑你所要的就是一个 OrderedDict。 > > 顺手写个两个实现,后面那个类似你用的方法,用两个列表: > 谢谢,是这个意思,第一个实现看起来比我的好一些 -- with kind regards
2007年05月18日 星期五 10:34
On 5/18/07, ro <rosettas在gmail.com> wrote: > On 5/17/07, 黄毅 <yi.codeplayer在gmail.com> wrote: > > On 5/17/07, ro <rosettas在gmail.com> wrote: > > > hi all > > > > > > 我需要做一个有list的可顺序写入,顺序遍历特点的参数+对应值的数据结构 > > > 根据c++的思维,我用了两个list,根据顺序使两个list中的值保持一一对应,并且封装了一些操作接口. > > > > > > 不过总觉得不够简洁,是否有更好的方法呢 > > > > 怀疑你所要的就是一个 OrderedDict。 > > > > 顺手写个两个实现,后面那个类似你用的方法,用两个列表: > > > > 谢谢,是这个意思,第一个实现看起来比我的好一些 > cookbook还有其它的一些包,象django中就有这样的模块,可以找一找。 -- I like python! UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad My Blog: http://www.donews.net/limodou
2007年05月18日 星期五 11:03
这里有一个现成的: http://code.djangoproject.com/browser/django/trunk/django/utils/datastructures.py#L53 -- http://codeplayer.blogspot.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://python.cn/pipermail/python-chinese/attachments/20070518/d92be7de/attachment.htm
Zeuux © 2025
京ICP备05028076号