2017-04-24 123 views
2

我正在尝试制作一个保存到python文件的电话簿。这里是代码有问题的片段:字典错误:“TypeError:'str'对象不支持项目分配”

import os 

f = open("save") 
forbidden = f.readline() 
forbiddens = f.readline() 
dictionary = f.readline() 
stop = 0 
global arguments 
print("phonebook os by me") 

def write(): 
    global forbidden 
    global forbiddens 
    global dictionary 
    f = open("save") 
    f.write(forbidden and '\n' and forbiddens and '\n' and dictionary) 
    f.close() 

def add_cc(): 
    global forbidden 
    global dictionary 
    global arguments 
    name = arguments[1] 
    number = int(arguments[2]) 
    if name in forbidden: 
     print("403: forbidden!") 
    elif name in dictionary: 
     print("406: Not acceptable! This item is already in the dictionary!") 
    else: 
     dictionary[name] = number 
    write() 
    start() 

def del_cc(): 
    global arguments 
    global dictionary 
    name = arguments[1] 
    del dictionary[name] 
    write() 
    start() 

def get_cc(): 
    global arguments 
    global forbidden 
    global dictionary 
    name = arguments[1] 
    if name in dictionary: 
     print(dictionary[name]) 
    elif name in forbidden: 
     print("403: Forbidden!") 
    else: 
     print("404: Item not Found.") 
    start() 

(休息太长)

,问题就出现在dictionary[name] = number线12我得到的错误是

dictionary[name] = number 
TypeError: 'str' object does not support item assignment 
可以

别人的帮助我?

+1

哪里字典获得创建?它看起来像某处它被重新分配给一个字符串(或者可能初始化为一个字符串)。在第12行之前尝试“打印(字典)”,看看它是什么。 – elethan

+1

它是'{}'不''{}'' –

回答

0

是的,我可以帮你:)。

检查您的代码以分配到dictionary。变量dictionary不是一本字典,而是一个字符串,所以在某处你的代码将是这样的:

dictionary = " evaluates to string " 

或等同于它。

上面这个你已经从错误信息中知道了,但它似乎没有帮助你知道该怎么做才能避免错误。所以在这里,你如何改变你的代码,从而使错误消失:

import os 

f = open("save") 
forbidden = f.readline() 
forbiddens = f.readline() 

dictionary = {} # now it is a dictionary not a string "{}"

+0

整个代码,(如果你想看到它)在那里 –

+0

也是文本文件读取'{}'(新行)'[]'(new行)'{}' –

相关问题