2014-02-06 19 views
-1

有人可以幫助我添加信息到字典中的一個鍵並相應地更新信息?添加禁止原因模塊錯誤字典對象沒有屬性追加和加載和保存方法無法保存和正確加載

也可以有人給我一個更好的方法來保存和加載比我目前正在做的?

我的字典鍵當前方法:

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 object has no attribute 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 

的原因是不那裏和用戶名已被拆分它也不是字典格式

有人可以告訴我我做錯了什麼,什麼代碼將適合在這裏做我想要什麼,而不是我目前有什麼?

+0

問題編輯我希望我這樣做是正確的,它看起來像我一樣,我接受了答案仍然適合我的問題,我已經做了我的問題更清楚那是以前 – Belldandu

回答

1
banr.banr_database[roomname].update({username:reason}) 

類型的字典沒有追加......他們有一個更新應該做你想做

保存剛剛序列化數據是什麼?泡菜工程這個... 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")) 
+0

+1 Joran比斯利在回答我的問題的前半部分時,如果有人能夠回答,我會做出快速反應下半場對我來說,我會非常高興 – Belldandu

+0

那裏...見編輯 –

+0

+1 Joran Beasley再次感謝你幫我做了我的模塊,正確地回答了全部問題 – Belldandu