2004年09月07日 星期二 16:09
还真有挑战性,初学python,有错误请指出:
>>> a={'a':3,'b':5,'c':1,'d':4}
>>> a
{'a': 3, 'c': 1, 'b': 5, 'd': 4}
>>> b=[x for x in a]
>>> b
['a', 'c', 'b', 'd']
>>> c=[y for x,y in a.iteritems()]
>>> c
[3, 1, 5, 4]
>>> d=dict(zip(c,b))
>>> d
{1: 'c', 3: 'a', 4: 'd', 5: 'b'}
好像是达到要求了吧?
> 现在已经有一个字典,Keys是英文单词,Values是这个单词在文件中出现的次数。
> 想要给这个字典重新排序,让出现次数最多的单词排第一位,出现次数最少的排最后。
>
> 我尝试把字典里的values放入一个list里,在对list排序,但是好像排完也没有什么意义。很多单词的values值一样,就是排完也没有办法把把排序结果应用回原来的字典里。
>
> 我能想当的另一个方案是,每个单词和后面的所有词比较,当遇到values比他大的,就改为values更大的单词开始比较,如果到最后都没有比他大的,就把这个词写入新字典里,同时在旧字典里删除自己,但是好像太弱智了点。
>
>
> 不知道还有什么其他更好地解决方案。
>
> 谢谢~~~
>
> 基础太差,时间又太紧,我问题好多,学得好辛苦 。 :(
>
>
>
-----------------------------------------------------------
马上到http://www.126.com申请260M全国最大免费邮箱!
提供新邮件到达手机短信提醒功能, 随时掌握邮件信息!
2004年09月07日 星期二 16:11
请é®ï¼pcapå
æ¯åªå¿å¾å°çï¼è°¢è°¢ï¼
Best Regards
Sun Haitao |
----- 转å人 åæµ·æ¶123203/user/zte_ltd æ¶é´ 2004-09-07 16:14 -----
æ¢
岿¾
<stephen.cn at gmail.com> æ¶ä»¶äººï¼ python-chinese at lists.python.cn
æéï¼
å¯éï¼
åä»¶äººï¼ ä¸»é¢ï¼ Re: [python-chinese] 请é®å¨pythonä¸å¦ä½æå»ºä¸ä¸ªI CMP类似çIPå
ç¶åååºå»ï¼
python-chinese-bounces at list
s.python.cn
2004-09-07 16:01
请çå¤ ç» æ¢
岿¾; 请çå¤ ç»
python-chinese
è¿ä¸ªä¾åä½ çä¸ä¸ã
æä¹æ²¡äººåçæçé®é¢å¢ï¼éé·ã
#!/usr/bin/env python2
import pcap
import sys
import string
import time
import socket
import struct
protocols={socket.IPPROTO_TCP:'tcp',
socket.IPPROTO_UDP:'udp',
socket.IPPROTO_ICMP:'icmp'}
def decode_ip_packet(s):
d={}
d['version']=(ord(s[0]) & 0xf0) >> 4
d['header_len']=ord(s[0]) & 0x0f
d['tos']=ord(s[1])
d['total_len']=socket.ntohs(struct.unpack('H',s[2:4])[0])
d['id']=socket.ntohs(struct.unpack('H',s[4:6])[0])
d['flags']=(ord(s[6]) & 0xe0) >> 5
d['fragment_offset']=socket.ntohs(struct.unpack('H',s[6:8])[0] & 0x1f)
d['ttl']=ord(s[8])
d['protocol']=ord(s[9])
d['checksum']=socket.ntohs(struct.unpack('H',s[10:12])[0])
d['source_address']=pcap.ntoa(struct.unpack('i',s[12:16])[0])
d['destination_address']=pcap.ntoa(struct.unpack('i',s[16:20])[0])
if d['header_len']>5:
d['options']=s[20:4*(d['header_len']-5)]
else:
d['options']=None
d['data']=s[4*d['header_len']:]
return d
def dumphex(s):
bytes = map(lambda x: '%.2x' % x, map(ord, s))
for i in xrange(0,len(bytes)/16):
print ' %s' % string.join(bytes[i*16:(i+1)*16],' ')
print ' %s' % string.join(bytes[(i+1)*16:],' ')
def print_packet(pktlen, data, timestamp):
if not data:
return
if data[12:14]=='\x08\x00':
decoded=decode_ip_packet(data[14:])
print '\n%s.%f %s > %s' % (time.strftime('%H:%M',
time.localtime(timestamp)),
timestamp % 60,
decoded['source_address'],
decoded['destination_address'])
for key in ['version', 'header_len', 'tos', 'total_len', 'id',
'flags', 'fragment_offset', 'ttl']:
print ' %s: %d' % (key, decoded[key])
print ' protocol: %s' % protocols[decoded['protocol']]
print ' header checksum: %d' % decoded['checksum']
print ' data:'
dumphex(decoded['data'])
if __name__=='__main__':
if len(sys.argv) < 3:
print 'usage: sniff.py '
sys.exit(0)
p = pcap.pcapObject()
dev = sys.argv[1]
net, mask = pcap.lookupnet(dev)
# note: to_ms does nothing on linux
p.open_live(dev, 1600, 0, 100)
p.setfilter(string.join(sys.argv[2:],' '), 0, 0)
try:
while 1:
p.dispatch(1, print_packet)
except KeyboardInterrupt:
print '%s' % sys.exc_type
print 'shutting down'
print '%d packets received, %d packets dropped, %d packets dropped
by interface' % p.stats()
----- Original Message -----
From: River <river at exoweb.net>
Date: Tue, 7 Sep 2004 15:34:22 +0800
Subject: [python-chinese] 请é®å¨pythonä¸å¦ä½æå»ºä¸ä¸ªI CMP类似çIPå
ç¶åååº
å»ï¼
To: python-chinese at lists.python.cn
Cä¸å¾å®¹æå®ç°ï¼ä½å¨pythonä¸è½å¦è¿è¡å¢ï¼
è½ç¶è¿ä¸æ¯pythonçæ
é¿ã
è½å¦ä¸¾ä¸ªç®åä¾åï¼è°¢è°¢ã
_______________________________________________
python-chinese list
python-chinese at lists.python.cn
http://python.cn/mailman/listinfo/python-chinese
_______________________________________________
python-chinese list
python-chinese at lists.python.cn
http://python.cn/mailman/listinfo/python-chinese
*******************************************
±¾ÔÂ¼ï¿½ï¿½Ê¼ï¿½ï¿¢É§Â·ï¿ Ð,Â»ï¿½ï¿½ÂªÂ·ï¿ ×£ºhelpdesk at zte.com.cn
********************************************
(Embedded image moved to file: pic24596.pcx)
*******************************************
±¾ÓʼþÒѾ¹ýÀ¬»øÓʼþ¹ýÂË£¬Èç·¢ÏÖÀ¬»ø
Óʼþ£¬Çëת·¢ÖÁ£ºhelpdesk at zte.com.cn
********************************************
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pic24596.pcx
Type: application/octet-stream
Size: 907 bytes
Desc: not available
Url : http://lists.exoweb.net/pipermail/python-chinese/attachments/20040907/ce92c48f/pic24596.obj
2004年09月07日 星期二 16:23
还是个字典呀。但字典是无序的。这样看上去好象可以,其实不行。 On Tue, 7 Sep 2004 16:09:55 +0800 (CST), jagucpu <jagucpu at 126.com> wrote: > 还真有挑战性,初学python,有错误请指出: > > >>> a={'a':3,'b':5,'c':1,'d':4} > >>> a > {'a': 3, 'c': 1, 'b': 5, 'd': 4} > >>> b=[x for x in a] > >>> b > ['a', 'c', 'b', 'd'] > >>> c=[y for x,y in a.iteritems()] > >>> c > [3, 1, 5, 4] > >>> d=dict(zip(c,b)) > >>> d > {1: 'c', 3: 'a', 4: 'd', 5: 'b'} > > 好像是达到要求了吧? > > > > 现在已经有一个字典,Keys是英文单词,Values是这个单词在文件中出现的次数。 > > 想要给这个字典重新排序,让出现次数最多的单词排第一位,出现次数最少的排最后。 > > > > 我尝试把字典里的values放入一个list里,在对list排序,但是好像排完也没有什么意义。很多单词的values值一样,就是排完也没有办法把把排序结果应用回原来的字典里。 > > > > 我能想当的另一个方案是,每个单词和后面的所有词比较,当遇到values比他大的,就改为values更大的单词开始比较,如果到最后都没有比他大的,就把这个词写入新字典里,同时在旧字典里删除自己,但是好像太弱智了点。 > > > > > > 不知道还有什么其他更好地解决方案。 > > > > 谢谢~~~ > > > > 基础太差,时间又太紧,我问题好多,学得好辛苦 。 :( > > > > > > > > ----------------------------------------------------------- > 马上到http://www.126.com申请260M全国最大免费邮箱! > 提供新邮件到达手机短信提醒功能, 随时掌握邮件信息! > > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > > -- I like python!
2004年09月07日 星期二 16:50
如我在前面所说,按照数据结构理论,字典本来就不应该在外界排序,因为手工排序可能会影响字典的工作效率,而大部分的字典,包括Python的,也确实按照这个思路实现的——我们不能对它的内部存储顺序进行直接有效的干涉,这不是技术达不到,是约定不允许。 On Tue, 7 Sep 2004 16:23:11 +0800, limodou <limodou at gmail.com> wrote: > 还是个字典呀。但字典是无序的。这样看上去好象可以,其实不行。 > > > > > On Tue, 7 Sep 2004 16:09:55 +0800 (CST), jagucpu <jagucpu at 126.com> wrote: > > 还真有挑战性,初学python,有错误请指出: > > > > >>> a={'a':3,'b':5,'c':1,'d':4} > > >>> a > > {'a': 3, 'c': 1, 'b': 5, 'd': 4} > > >>> b=[x for x in a] > > >>> b > > ['a', 'c', 'b', 'd'] > > >>> c=[y for x,y in a.iteritems()] > > >>> c > > [3, 1, 5, 4] > > >>> d=dict(zip(c,b)) > > >>> d > > {1: 'c', 3: 'a', 4: 'd', 5: 'b'} > > > > 好像是达到要求了吧? > > > > > > > 现在已经有一个字典,Keys是英文单词,Values是这个单词在文件中出现的次数。 > > > 想要给这个字典重新排序,让出现次数最多的单词排第一位,出现次数最少的排最后。 > > > > > > 我尝试把字典里的values放入一个list里,在对list排序,但是好像排完也没有什么意义。很多单词的values值一样,就是排完也没有办法把把排序结果应用回原来的字典里。 > > > > > > 我能想当的另一个方案是,每个单词和后面的所有词比较,当遇到values比他大的,就改为values更大的单词开始比较,如果到最后都没有比他大的,就把这个词写入新字典里,同时在旧字典里删除自己,但是好像太弱智了点。 > > > > > > > > > 不知道还有什么其他更好地解决方案。 > > > > > > 谢谢~~~ > > > > > > 基础太差,时间又太紧,我问题好多,学得好辛苦 。 :( > > > > > > > > > > > > > ----------------------------------------------------------- > > 马上到http://www.126.com申请260M全国最大免费邮箱! > > 提供新邮件到达手机短信提醒功能, 随时掌握邮件信息! > > > > > > _______________________________________________ > > python-chinese list > > python-chinese at lists.python.cn > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > -- > I like python! > > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > > -- 刘鑫 March.Liu
2004年09月07日 星期二 21:22
http://sourceforge.net/project/showfiles.php?group_id=14007&package;_id=13826 On Tue, 7 Sep 2004 16:11:33 +0800, sun.haitao at zte.com.cn <sun.haitao at zte.com.cn> wrote: > 请问,pcap包是哪儿得到的?谢谢! > > Best Regards > Sun Haitao | > > ----- 转发人 孙海涛123203/user/zte_ltd 时间 2004-09-07 16:14 ----- > > 梅劲松 > <stephen.cn at gmail.com> 收件人: python-chinese at lists.python.cn > 抄送: > 密送: > 发件人: 主题: Re: [python-chinese] 请问在python下如何构建一个I CMP类似的IP包然后发出去? > python-chinese-bounces at list > s.python.cn > > 2004-09-07 16:01 > 请答复 给 梅劲松; 请答复 给 > python-chinese > > 这个例子你看一下。 > 怎么没人回答我的问题呢?郁闷。 > > #!/usr/bin/env python2 > > import pcap > import sys > import string > import time > import socket > import struct > > protocols={socket.IPPROTO_TCP:'tcp', > socket.IPPROTO_UDP:'udp', > socket.IPPROTO_ICMP:'icmp'} > > def decode_ip_packet(s): > d={} > d['version']=(ord(s[0]) & 0xf0) >> 4 > d['header_len']=ord(s[0]) & 0x0f > d['tos']=ord(s[1]) > d['total_len']=socket.ntohs(struct.unpack('H',s[2:4])[0]) > d['id']=socket.ntohs(struct.unpack('H',s[4:6])[0]) > d['flags']=(ord(s[6]) & 0xe0) >> 5 > d['fragment_offset']=socket.ntohs(struct.unpack('H',s[6:8])[0] & 0x1f) > d['ttl']=ord(s[8]) > d['protocol']=ord(s[9]) > d['checksum']=socket.ntohs(struct.unpack('H',s[10:12])[0]) > d['source_address']=pcap.ntoa(struct.unpack('i',s[12:16])[0]) > d['destination_address']=pcap.ntoa(struct.unpack('i',s[16:20])[0]) > if d['header_len']>5: > d['options']=s[20:4*(d['header_len']-5)] > else: > d['options']=None > d['data']=s[4*d['header_len']:] > return d > > def dumphex(s): > bytes = map(lambda x: '%.2x' % x, map(ord, s)) > for i in xrange(0,len(bytes)/16): > print ' %s' % string.join(bytes[i*16:(i+1)*16],' ') > print ' %s' % string.join(bytes[(i+1)*16:],' ') > > def print_packet(pktlen, data, timestamp): > if not data: > return > > if data[12:14]=='\x08\x00': > decoded=decode_ip_packet(data[14:]) > print '\n%s.%f %s > %s' % (time.strftime('%H:%M', > time.localtime(timestamp)), > timestamp % 60, > decoded['source_address'], > decoded['destination_address']) > for key in ['version', 'header_len', 'tos', 'total_len', 'id', > 'flags', 'fragment_offset', 'ttl']: > print ' %s: %d' % (key, decoded[key]) > print ' protocol: %s' % protocols[decoded['protocol']] > print ' header checksum: %d' % decoded['checksum'] > print ' data:' > dumphex(decoded['data']) > > if __name__=='__main__': > > if len(sys.argv) < 3: > print 'usage: sniff.py> sys.exit(0) > p = pcap.pcapObject() > > dev = sys.argv[1] > net, mask = pcap.lookupnet(dev) > # note: to_ms does nothing on linux > p.open_live(dev, 1600, 0, 100) > > p.setfilter(string.join(sys.argv[2:],' '), 0, 0) > > try: > while 1: > p.dispatch(1, print_packet) > > except KeyboardInterrupt: > print '%s' % sys.exc_type > print 'shutting down' > print '%d packets received, %d packets dropped, %d packets dropped > by interface' % p.stats() > > ----- Original Message ----- > From: River <river at exoweb.net> > Date: Tue, 7 Sep 2004 15:34:22 +0800 > Subject: [python-chinese] 请问在python下如何构建一个I CMP类似的IP包然后发出 > 去? > To: python-chinese at lists.python.cn > > C下很容易实现,但在python下能否进行呢, > 虽然这不是python的擅长。 > 能否举个简单例子,谢谢。 > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > ******************************************* > ±¾Ԋ¼��ʼ�¬ɧ·¢Ж,»��ª·¢ׁ£ºhelpdesk at zte.com.cn > ******************************************** > > (Embedded image moved to file: pic24596.pcx) > > ******************************************* > ���ʼ��Ѿ���,���ʼ����ˣ��緢��,�� > �ʼ�����ת���c�helpdesk at zte.com.cn > ******************************************** > > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > > > > '
Zeuux © 2025
京ICP备05028076号