On Tue, 2006-04-11 at 22:37 -0500, Jason Massey wrote: > Works for me: > > >>> dict1 = { 0x2018:u'k', 0x2019:u'd'} > >>> n = 0x2018 > >>> print dict1[n] > k > >>> > > On 4/11/06, kakada <[EMAIL PROTECTED]> wrote: > Hello all, > > For example, I have a dictionary: > dict1 = { 0x2018:u'k', 0x2019:u'd'} > > I assign: > n = 0x2018 > print dict1[n] > > Then: > KeyError: '0x2018' > > But I can call directly: > print dict1[0x2018] > > So, what is wrong with this? How can I solve it? > > Thx > > kakada > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor
Look into the value of n after assignment: In [285]: n = 0x2018 In [286]: n Out[286]: 8216 n is taken as an integer containing the decimal number 8216, which in hex is represented as 0x2018. Try again to see if you did not mistakenly typed dict1['0x2018'] or else defined n as such. If you try dict1[n], dict1[0x2018], or dict1[8216] you get a correct result, since the integer variable 'n' contains that value. Trying dict1['0x2016'] gives you the error because the key does not exist. define dict1 as: dict1 = { 0x2018:u'k', 0x2019:u'd'} and then display it whole: In [299]: print dict1 {8216: u'k', 8217: u'd'} Can you see your '0x2018' key anywhere? HTH Victor _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor