OK guys, I've hit a wall & can't find any info on what I'm wanting to do.
Maybe someone can help me out here or point me in the right direction please?

I have a shelve object- book.
If I do book.keys(), naturally I get a list of the keys-
When I do a book.keys(), I again get a list of those keys-
Is there a way to find out which key a key belongs to?

like - keyb belongs to what key? (keyb belongs to key1)

Thanks

2
Contributors
2
Replies
3
Views
10 Years
Discussion Span
Last Post by eibwen

Well, that question may not have an answer if the values are not unique; for example, if

book = {'keya':valuea, 'keyb':valueb}

and

book = {'keya':valuec, 'keyd':valued}

then 'keya' cannot be mapped backwards.

But suppose that your values are unique. Then you could do this:

``````>>> import shelve  ## set up an example
>>> f= shelve.open("mydatabase")
>>> f['one'] = {1:2,3:4}
>>> f['two'] = {5:6,7:8}
>>> f.close()

>>> revdict = {}  ## Here's the reverse lookup code
>>> for key in f.keys():
for subkey in f[key]:
revdict[subkey] = key

>>> revdict
{1: 'one', 3: 'one', 5: 'two', 7: 'two'}``````

Basically, you're just reversing a dictionary. But again, you must be mathematically certain that your values are unique; else, you'll clobber things.

Jeff