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

Recommended Answers

All 2 Replies

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

commented: good reasoning and help +8

Thanks buddy!!!
That's exactly what I've been hunting for.
:)

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.