the same role as "recordsor "structsin other languages the followingfor examplefills out dictionary describing hypothetical personby assigning to new keys over time (if you are bobmy apologies for picking on your name in this book--it' easy to type!)rec {rec['name''bobrec['age' rec['job''developer/managerprint(rec['name']bob especially when nestedpython' built-in data types allow us to easily represent structured information the following again uses dictionary to capture object propertiesbut it codes it all at once (rather than assigning to each key separatelyand nests list and dictionary to represent structured property valuesrec {'name''bob''jobs'['developer''manager']'web''www bobs org/~bob''home'{'state''overworked''zip' }to fetch components of nested objectssimply string together indexing operationsrec['name''bobrec['jobs'['developer''manager'rec['jobs'][ 'managerrec['home']['zip' although we'll learn in part vi that classes (which group both data and logiccan be better in this record roledictionaries are an easy-to-use tool for simpler requirements for more on record representation choicessee also the upcoming sidebar "why you will caredictionaries versus listson page as well as its extension to tuples in and classes in also notice that while we've focused on single "recordwith nested data herethere' no reason we couldn' nest the record itself in largerenclosing database collection coded as list or dictionarythough an external file or formal database interface often plays the role of top-level container in realistic programsdb [db append(recdb append(otherdb[ ]['jobs'db {db['bob'rec list "databasea dictionary "databasedictionaries in action