Python 添加禁止原因模块错误dict对象没有属性append and load和save方法无法正确保存和加载
有人能帮我把信息添加到dict的一个键上并相应地更新这些信息吗 还有人能给我一个比我现在做的更好的保存和加载方法吗 我当前的dict键方法:Python 添加禁止原因模块错误dict对象没有属性append and load和save方法无法正确保存和加载,python,Python,有人能帮我把信息添加到dict的一个键上并相应地更新这些信息吗 还有人能给我一个比我现在做的更好的保存和加载方法吗 我当前的dict键方法: def add_banreason(roomname, username, reason): roomname = roomname.lower() username = username.lower() if not roomname in banr.banr_database: banr.banr_databas
def add_banreason(roomname, username, reason):
roomname = roomname.lower()
username = username.lower()
if not roomname in banr.banr_database:
banr.banr_database[roomname] = {username:reason}
else:
banr.banr_database[roomname].append({username:reason})
我在这里得到一个错误,说dict对象没有属性append
我正在寻找这样一个没有错误的结果:
{roomname: {username:reason, username:reason, username:reason}, roomname: {username:reason, username:reason, username:reason}}
我当前的保存和加载方法:
### load the database
def load():
banr_database = {}
with open("banr.DB","r") as t:
data = t.read()
if data != "":
for l in data.split("\n"):
a,b = l.split("):(",1)
c = [w.split(")-(") for w in b.split("(:)")]
banr_database[a] = c
banr.banr_database = banr_database
### save the database
def save():
l = []
for a,b in banr.banr_database.items():
c = "(:)".join([")-(".join(w) for w in b])
l.append(a+"):("+c)
with open("banr.DB","w") as t:
t.write("\n".join(sorted(l)))
我希望此信息以下面给定示例中的格式保存和加载:
{roomname: {username:reason, username:reason, username:reason}, roomname: {username:reason, username:reason, username:reason}}
然而,我得到的却是:
anime-gir):(k)-(a)-(m)-(i)-(j)-(o)-(u)-(t)-(o)-(u)-(m)-(a)-(3)-(1)-(0
原因不在那里,用户名已被拆分。它也不是dict格式
有人能告诉我我做错了什么,这里什么代码适合做我想做的而不是我现在拥有的吗
banr.banr_database[roomname].update({username:reason})
dicts没有附加。。。他们有一个更新,应该做你想要的
要保存,只需序列化数据。。。pickle为这个工作。。。不过json的速度要快得多
import json
db_fname = "banr.DB"
def load():
banr.banr_database = json.load(open(db_fname))
def save():
json.dump(banr.banr_database,open(db_fname,"w"))
+1 Joran Beasley关于快速响应关于回答我问题的前半部分如果有人能为我回答下半部分,我会非常高兴+1 Joran Beasley再次感谢你帮助我正确地完成了模块,完整地回答了问题只是暂时搁置一下,你可能会更好地使用sqlite处理这类问题编辑问题我希望我做到了是的,看起来是这样,我接受的答案仍然符合我的问题,我已经把我的问题说得比以前清楚多了