python 3 保存字典

Sta*_*ird 4 python dictionary

我已经看过类似这样的其他问题,但它们对我来说太复杂了,我无法理解(只学习了几天)。我正在制作电话簿,我正在尝试像这样保存字典,

numbers = {}
def save(a):
   x = open("phonebook.txt", "w")
   for l in a:
       x.write(l, a[l])
   x.close()
Run Code Online (Sandbox Code Playgroud)

但是我得到错误 write() 只需要 1 个参数并且 obv 我传递了 2,所以我的问题是我如何以初学者友好的方式做到这一点,你能用非技术性的方式来描述它。非常感谢。

ale*_*cxe 5

最好使用json模块将字典转储/加载到文件中:

>>> import json
>>> numbers = {'1': 2, '3': 4, '5': 6}
>>> with open('numbers.txt', 'w') as f:
...     json.dump(numbers, f)
>>> with open('numbers.txt', 'r') as f:
...     print json.load(f)
... 
{u'1': 2, u'3': 4, u'5': 6}
Run Code Online (Sandbox Code Playgroud)


cel*_*low 5

虽然 JSON 是一个不错的选择,而且它是跨语言的并且受浏览器支持,但 Python 有自己的序列化格式,称为 pickle,它更加灵活。

import pickle

data = {'Spam': 10, 'Eggs': 5, 'Bacon': 11}

with open('/tmp/data.pickle', 'w') as pfile:
    pickle.dump(data, pfile)

with open('/tmp/data.pickle', 'r') as pfile:
    read_data = pickle.load(pfile)

print(read_data)
Run Code Online (Sandbox Code Playgroud)

Pickle 是特定于 Python 的,不适用于其他语言,并且小心不要从不受信任的来源(例如通过网络)加载 pickle 数据,因为它不被认为是“安全的”。

Pickle 也适用于其他数据类型,包括您自己的类的实例。