Since python dictionary is unordered, the output can be in any order. To convert a list to dictionary, we can use list comprehension and make a key:value pair of consecutive elements. Finally, typecase the list to dict type.
You can read a text file using the open() and readlines() methods. To read a text file into a list, use the split() method. This method splits strings into a list at a certain character. In the example above, we split a string into a list based on the position of a comma and a space (“, ”).
To read a file into a list in Python, use the file. read() function to return the entire content of the file as a string and then use the str. split() function to split a text file into a list.
Why not use python pickle? Python has a great serializing module called pickle it is very easy to use.
import cPickle
cPickle.dump(obj, open('save.p', 'wb'))
obj = cPickle.load(open('save.p', 'rb'))
There are two disadvantages with pickle:
If you are using python 2.6 there is a builtin module called json. It is as easy as pickle to use:
import json
encoded = json.dumps(obj)
obj = json.loads(encoded)
Json format is human readable and is very similar to the dictionary string representation in python. And doesn't have any security issues like pickle. But might be slower than cPickle.
I'd use shelve
, json
, yaml
, or whatever, as suggested by other answers.
shelve
is specially cool because you can have the dict
on disk and still use it. Values will be loaded on-demand.
But if you really want to parse the text of the dict
, and it contains only str
ings, int
s and tuple
s like you've shown, you can use ast.literal_eval
to parse it. It is a lot safer, since you can't eval full expressions with it - It only works with str
ings, numbers, tuple
s, list
s, dict
s, bool
eans, and None
:
>>> import ast
>>> print ast.literal_eval("{12: 'mydict', 14: (1, 2, 3)}")
{12: 'mydict', 14: (1, 2, 3)}
I would suggest that you use YAML for your file format so you can tinker with it on the disc
How does it look:
- It is indent based
- It can represent dictionaries and lists
- It is easy for humans to understand
An example: This block of code is an example of YAML (a dict holding a list and a string)
Full syntax: http://www.yaml.org/refcard.html
To get it in python, just easy_install pyyaml. See http://pyyaml.org/
It comes with easy file save / load functions, that I can't remember right this minute.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With