Python 3字典更新序列元素错误

时间:2017-06-08 13:23:40

标签: python-3.x

我试图制作一个简单的Def,以便我可以轻松地附加我的json文件。无论我如何尝试,我都无法获得价值。

在顶部我使用

def AppendPersonal_data(X,Y):
    with open( username +'.json') as f:
        keymaster= X,Y 
        Personal_data = json.load(f)
        Personal_data.update(keymaster)
        with open(username + '.json', 'w') as f:
            json.dump(Personal_data, f)

然后在我的按钮上按我的菜单

choice = input()
random_number = "1"
if choice == "1":
    if random_number == choice:
        now = str(datetime.now()) 
        print("YOU PICKED CORRECT!! ")
    else:
        print("YOU PICKED WRONG!! ")
    AppendPersonal_data(random_number,now) 

无论我尝试什么,我总是最终得到:

ValueError: dictionary update sequence element #0 has length 1; 2 is required

2 个答案:

答案 0 :(得分:1)

您的代码存在多个问题 - 一个是引发错误的问题 - 您尝试使用元组(Personal_data)更新字典(keymaster)。您应该将字典更新为:Personal_data[X] = Y

但更重要的是,你不应该同时打开同一个文件的两个文件句柄 - 而是更新已经打开的文件:

import json

def append_personal_data(username, x, y):
    with open(username + ".json", "r+") as f:
        personal_data = json.load(f)
        personal_data[x] = y
        f.seek(0)  # rewind
        f.truncate()  # clear the file content
        json.dump(personal_data, f)

答案 1 :(得分:0)

经过几个小时的搞乱后,我已经开始工作了 在顶部

def AppendPersonal_data(X):
    with open( username +'.json') as f: 
        Personal_data = json.load(f)
        Personal_data.update(X)
        with open(username + '.json', 'w') as f:
            json.dump(Personal_data, f)

然后按下按钮

    choice = input()
        random_sound = "1"
        if choice == "1":
            now = str(datetime.now())
            if random_sound == choice: 
                print("YOU PICKED CORRECT!! ")
                guess1= { ''+ str(datetime.now())+'' : ''+ str(random_sound) + '_Y' }
            else:
                guess1= { ''+ str(datetime.now())+'' : ''+ str(random_sound) + '_X' }
                print("YOU PICKED WRONG!! ")

            print (guess1)
            AppendPersonal_data(guess1) 

我切换了datetime和random_sound值,但是将它们切换回来的效果相同。 对所有的丑陋感到抱歉。这是我使用Python的第3天。就像15h一样。 谢谢大家的提示。如果有办法优化这个,请告诉我。