Tim Chase wrote: > I would lean towards using tuples, as in > > ports = [('5631','udp'), ('5632', 'tcp'), ('3389','tcp'), ('5900','tcp')] > > which you can then drop into your code: > > for (port, protocol) in ports: > print port, protocol > #do more stuff > > This allows you to use the same port with both UDP and TCP. If you want > to ensure that only one pair (port+protocol) can be in the list, you can > use a set() object:
But again, order will be lost (if that is of any consequence). Another option would be to have a dict of sets keyed on port: In Python 2.3: >>> import sets >>> ports = {} >>> def add_port(port, prot): ... if port not in ports: ... ports[port]=sets.Set() ... ports[port].add(prot) ... >>> add_port(25, 'tcp') >>> add_port(25, 'udp') >>> add_port(80, 'tcp') >>> ports {80: Set(['tcp']), 25: Set(['udp', 'tcp'])} >>> add_port(80, 'tcp') >>> ports {80: Set(['tcp']), 25: Set(['udp', 'tcp'])} Dicts have the obvious advantage that you can look up the protcols used on a port without iterating over some sequence. -- http://mail.python.org/mailman/listinfo/python-list