免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: Rcfeng
打印 上一主题 下一主题

请问类的实例可以作为字典的key吗? [复制链接]

论坛徽章:
0
21 [报告]
发表于 2005-09-24 21:28 |只看该作者

请问类的实例可以作为字典的key吗?

dict是一种hash算法,要比遍历快。而且算法简单清晰就行,不一定非要与对象,重载挂勾。有时采用对象,重载之类的反倒程序写起来麻烦,不如简单的实现。好比你不希望在容器类中进行判断,其实这种处理反倒是最直接,最直观的做法,自已与别人也更容易理解,速度也快。
Rcfeng 该用户已被删除
22 [报告]
发表于 2005-09-24 22:36 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
23 [报告]
发表于 2005-09-24 23:37 |只看该作者

请问类的实例可以作为字典的key吗?

如果是纯为了速度快,自然应该考虑算法的设计。如果只是简单地将ip段保存在一个list中,自然不会对运算速度的提高有任何的帮助。我想hash也并不能对无序的东西进行快速的索引。因此首先需要对存储的东西进行预处理,然后再进行检索才可以加快速度。如果只是顺序处理的话,那可以考虑使用swig或pyrex将检索处理转为扩展模块才行。
Rcfeng 该用户已被删除
24 [报告]
发表于 2005-09-25 01:43 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
西门吹风_CU 该用户已被删除
25 [报告]
发表于 2007-02-16 13:56 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015亚冠之广州恒大
日期:2015-07-22 17:20:15
26 [报告]
发表于 2007-02-25 05:51 |只看该作者
哇 刚才乱说了 没看清代码就乱说
昏 不过我正准备说 把ip都弄成10进制 比较方便些

[ 本帖最后由 ghostwwl 于 2007-2-25 06:51 编辑 ]

论坛徽章:
0
27 [报告]
发表于 2007-10-19 12:11 |只看该作者

Re: 西门吹风_CU的方法

西门吹风_CU的方法虽然能部分实现ip查找的功能,但还是有BUG.

例如如下ip地址分配(已经进行过转换):

...
1019101701,1019101729,浙江省乐清市 电信,
1019101730,1019101730,浙江省乐清市 柳市沪川大酒店,
1019101731,1019101938,浙江省乐清市 电信,
1019101939,1019101939,浙江省乐清市 白象易趣网吧,
1019101940,1019101951,浙江省乐清市 电信,
1019101952,1019101967,浙江省温州市 电信,
1019101968,1019101975,浙江省温州市苍南县龙港镇 枫林网吧,
1019101976,1019102007,浙江省温州市 电信,
1019102008,1019102015,浙江省温州市苍南县龙港镇 阿里巴巴网吧,
1019102016,1019102023,浙江省温州市苍南县龙港镇 零点网吧,
1019102024,1019102027,浙江省温州市苍南县 矾山镇本色网吧,
...

其中有些IP地址区间会跨越第四个小节,比如说 202.166.187.1 ~ 202.166.189.2 代表某个地区的IP地址集合。那么简单把第四个小节去掉,其实并不能准确反映。

其实, Rcfeng 的关键问题出在 python 中 dictionary的 hash函数。在重载该函数的时候不能简单 return( ip.low_ip),而是要综合考虑 low_ip 和 up_ip.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP