Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #15602

Re: Get keys from a dicionary

From Gelonida N <gelonida@gmail.com>
Subject Re: Get keys from a dicionary
Date 2011-11-11 18:45 +0100
References <8f5215a8-d08f-4355-a5a2-77fcaa32c92d@j10g2000vbe.googlegroups.com> <j9jm2n$gik$1@dough.gmane.org>
Newsgroups comp.lang.python
Message-ID <mailman.2653.1321033516.27778.python-list@python.org> (permalink)

Show all headers | View raw


On 11/11/2011 02:31 PM, macm wrote:
> > Hi Folks
> >
> > I pass a nested dictionary to a function.
> >
> > def Dicty( dict[k1][k2] ):
> > 	print k1
> > 	print k2
> >
> > There is a fast way (trick) to get k1 and k2 as string.
> >
> > Whithout loop all dict. Just it!
> >
> > Regards
> >
> > macm


If my guessing was correct is this what you are looking for?


nesteddict = { 'a': { 'A' : 'value1 a_A' , 'B' : 'value2 a_B' },
               'b': { 'A' : 'value3 b_A' , 'B' : 'value4 b_B' },
               'c': { 'A' : 'value3 b_A' , 'B' : 'value4 b_B' },
             }

def find_in_nested_dict(adict, avalue):
    results = []
    for key1, sub_dict in adict.items():
        for key2, value in sub_dict.items():
            if avalue == value:
                results.append( (key1, key2) )
    return results

def mk_lookup(adict):
    lookup = {}
    for key1, sub_dict in adict.items():
        for key2, value in sub_dict.items():
            entry = lookup.get(value, [])
            entry.append( (key1, key2) )
            lookup[value] = entry
    return lookup

# good if you just want so search one value
value = nesteddict['c']['B']
keys =  find_in_nested_dict(nesteddict, value)
print "found %r in %r" % (value, keys)

# if you need many lookups perhaps better to 'precalculate a
# 'reversed' dict
lookup = mk_lookup(nesteddict)
keys =  lookup[value]
print "found %r in %r" % (value, keys)





Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Get keys from a dicionary macm <moura.mario@gmail.com> - 2011-11-11 05:31 -0800
  Re: Get keys from a dicionary Jon Clements <joncle@googlemail.com> - 2011-11-11 08:09 -0800
    Re: Get keys from a dicionary macm <moura.mario@gmail.com> - 2011-11-11 08:33 -0800
      Re: Get keys from a dicionary macm <moura.mario@gmail.com> - 2011-11-11 08:38 -0800
      Re: Get keys from a dicionary Dave Angel <d@davea.name> - 2011-11-11 11:47 -0500
      Re: Get keys from a dicionary John Gordon <gordon@panix.com> - 2011-11-11 17:28 +0000
  Re: Get keys from a dicionary John Gordon <gordon@panix.com> - 2011-11-11 16:25 +0000
    Re: Get keys from a dicionary macm <moura.mario@gmail.com> - 2011-11-11 08:36 -0800
  Re: Get keys from a dicionary Gelonida N <gelonida@gmail.com> - 2011-11-11 18:29 +0100
  Re: Get keys from a dicionary Gelonida N <gelonida@gmail.com> - 2011-11-11 18:45 +0100
    Re: Get keys from a dicionary John Gordon <gordon@panix.com> - 2011-11-11 17:51 +0000
  Re: Get keys from a dicionary alex23 <wuwei23@gmail.com> - 2011-11-13 21:42 -0800
  Re: Get keys from a dicionary alex23 <wuwei23@gmail.com> - 2011-11-13 21:44 -0800
  Multilevel dicts/arrays v. tuples as keys? [Was: Re: Get keys from a dicionary] Matej Cepl <mcepl@redhat.com> - 2011-11-14 11:05 +0100
    Re: Multilevel dicts/arrays v. tuples as keys? [Was: Re: Get keys from a dicionary] Tim Golden <mail@timgolden.me.uk> - 2011-11-14 10:42 +0000
    Re: Multilevel dicts/arrays v. tuples as keys? Peter Otten <__peter__@web.de> - 2011-11-14 11:47 +0100
      Re: Multilevel dicts/arrays v. tuples as keys? alex23 <wuwei23@gmail.com> - 2011-11-14 19:07 -0800

csiph-web