python 3保存字典

python 3保存字典,python,dictionary,Python,Dictionary,我看过其他类似的问题,但它们太过技术性,我无法理解(只学了几天)。 我正在制作一本电话簿,我正试图像这样保存一本字典 numbers = {} def save(a): x = open("phonebook.txt", "w") for l in a: x.write(l, a[l]) x.close() 但是我得到的error write()只接受1个参数,obv im传递2个参数,所以我的问题是,我如何才能以初学者的方式频繁地完成这项工作,您能否以非技术性

我看过其他类似的问题,但它们太过技术性,我无法理解(只学了几天)。 我正在制作一本电话簿,我正试图像这样保存一本字典

numbers = {}
def save(a):
   x = open("phonebook.txt", "w")
   for l in a:
       x.write(l, a[l])
   x.close()
但是我得到的error write()只接受1个参数,obv im传递2个参数,所以我的问题是,我如何才能以初学者的方式频繁地完成这项工作,您能否以非技术性的方式来描述它。
非常感谢。

您需要使用
json
模块和
jsonecode
dict,然后您可以使用该模块将新对象写入文件

读取文件时,需要
JSONDecode
将其转换回python dict

>>> import json
>>> d = {1:1, 2:2, 3:3}
>>> d
{1: 1, 2: 2, 3: 3}
>>> json.JSONEncoder().encode(d)
'{"1": 1, "2": 2, "3": 3}'
>>> with open('phonebook.txt', 'w') as f:
    f.write(json.JSONEncoder().encode(d))

>>> with open('phonebook.txt', 'r') as f:
    print f.readlines()

['{"1": 1, "2": 2, "3": 3}']
最好使用模块将字典转储/加载到文件或从文件加载字典:

>>> 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}

虽然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)
Pickle是特定于Python的,不适用于其他语言,请注意不要从不受信任的源(例如通过web)加载Pickle数据,因为它被认为是不安全的


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

您希望使用什么输出格式?@srinivasredythatiparty您应该删除该注释;可怕的建议。初学者友好:)但公平地说,只使用
json.dump()
json.load()
函数通常更简单。比如写
json.dump(d,f)
,读
json.load(f)
。谢谢你的回答,但你能解释一下“with”和“as f”吗。我认为,转储是,写入和加载是。read@PaulRice当然,这是一个上下文管理器,它是一个快捷方式,可以替换
try:except:finally:
样板代码<代码>转储是写的,
加载
是读的,对吧。好的,非常有帮助。谢谢最后一件事,我该如何在之后关闭它needed@PaulRice这就是重点,它会自动关闭它。Python很漂亮,不是吗?:)