How do I traverse and search a python dictionary?

前端 未结 7 1102
逝去的感伤
逝去的感伤 2020-12-04 18:52

I have nested dictionaries:

{\'key0\': {\'attrs\': {\'entity\': \'p\', \'hash\': \'34nj3h43b4n3\', \'id\': \'4130\'},
          u\'key1\': {\'attrs\': {\'ent         


        
7条回答
  •  悲&欢浪女
    2020-12-04 19:22

    This kind of problem is often better solved with proper class definitions, not generic dictionaries.

    class ProperObject( object ):
        """A proper class definition for each "attr" dictionary."""
        def __init__( self, path, attrDict ):
            self.path= path
            self.__dict__.update( attrDict )
        def __str__( self ):
            return "path %r, entity %r, hash %r, id %r" % (
                self.path, self.entity, self.hash, self.id )
    
    masterDict= {} 
    def builder( path, element ):
        masterDict[path]= ProperObject( path, element )
    
    # Use the Visitor to build ProperObjects for each "attr"
    walkDict( myDict, builder )
    
    # Now that we have a simple dictionary of Proper Objects, things are simple
    for k,v in masterDict.items():
        if v.id == '4130-2-2':
            print v
    

    Also, now that you have Proper Object definitions, you can do the following

    # Create an "index" of your ProperObjects
    import collections
    byId= collections.defaultdict(list)
    for k in masterDict:
        byId[masterDict[k].id].append( masterDict[k] )
    
    # Look up a particular item in the index
    print map( str, byId['4130-2-2'] )
    

提交回复
热议问题