Forums
New posts
Search forums
Members
Current visitors
Log in
Register
What's new
Search
Search
Search titles only
By:
New posts
Search forums
Menu
Log in
Register
Install the app
Install
Forums
Archive
Archive
Python
Pickling dictionaries containing dictionaries: failing,recursion-style!
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
[QUOTE="lysdexia, post: 3163440"] I'm having great fun playing with Markov chains. I am making a dictionary of all the words in a given string, getting a count of how many appearances word1 makes in the string, getting a list of all the word2s that follow each appearance of word1 and a count of how many times word2 appears in the string as well. (I know I should probably be only counting how many times word2 actually follows word1, but as I said, I'm having great fun playing ...) printed output of the dictionary looks like so: {'and': [1, {'to': 1}], 'down': [1, {'upon': 1}], 'them': [1, {'down': 1}], 'no': [1, {'others': 1}], 'this': [1, {'it': 1}], 'is': [2, {'a': 2}], 'upon': [1, {'a': 1}], 'it': [2, {'is': 2}], 'think': [2, {'and': 1, 'words': 1}], 'write': [1, {'this': 1}], 'to': [3, {'write': 1, 'put': 1, 'think': 1}], 'words': [1, {'no': 1}], 'others': [1, {'think': 1}], 'put': [1, {'them': 1}], 'sin': [2, {'to': 2}]} Here's the actual function. def assembleVocab(self): self.wordDB = {} for word in self.words: try: if not word in self.wordDB.keys(): wordsWeights = {} afterwords = [self.words[i + 1] for i, e in enumerate(self.words) if e == word] for aw in afterwords: if not aw in wordsWeights.keys(): wordsWeights[aw] = afterwords.count(aw) self.wordDB[word] = [self.words.count(word), wordsWeights] except: pass out = open("mchain.pkl",'wb') pickle.dump(self.wordDB, out, -1) out.close() My problem is, I can't seem to get it to unpickle. When I attempt to load the saved data, I get: AttributeError: 'tuple' object has no attribute 'readline' with pickle, and TypeError: argument must have 'read' and 'readline' attributes Looking at the pickle pages on docs.python.org, I see that I am indeed supposed to be able to pickle ``tuples, lists, sets, and dictionaries containing only picklable objects''. I'm sure I'm missing something obvious. Clues? [/QUOTE]
Verification
Post reply
Forums
Archive
Archive
Python
Pickling dictionaries containing dictionaries: failing,recursion-style!
Top