On 07/30/2013 01:29 PM, cerr wrote:
Hi,
In my application I have followingf lines:
print curr_mac
print hexlify(buf)
binmac = unhexlify(curr_mac)
tmpgndict[binmac] += buf
curr_mac being a 3Byte MAVC address in ASCII and I want to populate a
dictionary where the value(buf) is indexed by binary mac.
I get this in my code:
Traceback (most recent call last):
File "gateway.py", line 2485, in <module>
main()
File "gateway.py", line 2459, in main
cloud_check()
File "gateway.py", line 770, in cloud_check
gnstr_dict[src] = gn_from_cloud(curr_mac)
File "gateway.py", line 2103, in gn_from_cloud
tmpgndict[binmac] += "HELLO"
KeyError: '\x04\xeeu'
but then again, the following works fine in the python interpreter:
mac = '04ee75'
dat = '2a0001016d03c400040001000a'
mydict = {}
mydict[unhexlify(mac)]=dat
print mydict
{'\x04\xeeu': '2a0001016d03c400040001000a'}
I really seem to do something wrong and can't see what it is. Can anyone help
me further here?
Thank you very much!
Ron
You are confusing the problem with excess code. Examine the following
simpler example which illustrates the problem:
>>> d = {}
>>> d[1] = 99
>>> d[2] += 98
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 2
>>>
The line
d[1] = 99
creates a key-value pair in the dictionary, but the line
d[2] += 98
tries to add 98 to an already existing value at d[2], But there is no
value at d[2] until you set it:
d[2] = 0 # for instance
You may want to look at defaultdict from the collections module.
Gary Herron
--
http://mail.python.org/mailman/listinfo/python-list