如何分配给字典中的列表
How to assign to a list in a dictionary
抱歉,我已经搜索过了,它看起来很简单,但我无法弄清楚。我正在尝试为字典中的列表赋值:
class Test(object):
def __init__(self):
self.test = { "color": ["", "", "", ""],
"incandescence": ["", "", "", ""] }
def setTest(self):
key = "color"
print "KEY is", key
self.test[key][0] = "TEST"
print self.test
def clearDict(self):
for key in self.test:
self.test[key] = ""
x = Test()
x.clearDict()
x.setTest()
错误:第 1 行:类型错误:文件第 10 行:'str' 对象不支持项目分配 #
为什么我不能将字符串分配给第 0 个元素?这怎么不一样:
test = ["", "", ""]
test[0] = "test"
print test
答案:['test', '', '']
在clearDict
def clearDict(self):
for key in self.test:
self.test[key] = ""
您正在将字典元素设置为空字符串。我想你想要这样的东西:
def clearDict(self):
for key in self.test:
for l in self.test[key]:
self.test[key][l] = ""
嗯,因为在创建 x
之后,您调用 clearDict
将 x.test
更改为 {"color": '', "incandescence": ''}
因此,当之后调用 setTest
时,您试图将字典中空字符串值的第一个元素设置为 "TEST"
,但失败了,因为字符串是不可变的。
问题出在您的 clearDict 方法中...您正在将 self.test[key] 的值设置为字符串
self.test[key] = ""
一旦你这样做,你就不能为字符串的一部分设置索引...如果你改变你的方法来创建一个新列表,你会更幸运。
self.test[key] = []
备注
顺便说一句,您可以像这样初始化,而不是使用 [0] 符号来设置第 0 个元素:
def __init__(self):
self.test = { "color": [], "incandescence": [] }
然后简单地附加到您的列表中以添加项目
def set_test(self):
self.test["color"].append("TEST")
无需确切知道列表中有多少元素即可获得相同的结果。
抱歉,我已经搜索过了,它看起来很简单,但我无法弄清楚。我正在尝试为字典中的列表赋值:
class Test(object):
def __init__(self):
self.test = { "color": ["", "", "", ""],
"incandescence": ["", "", "", ""] }
def setTest(self):
key = "color"
print "KEY is", key
self.test[key][0] = "TEST"
print self.test
def clearDict(self):
for key in self.test:
self.test[key] = ""
x = Test()
x.clearDict()
x.setTest()
错误:第 1 行:类型错误:文件第 10 行:'str' 对象不支持项目分配 #
为什么我不能将字符串分配给第 0 个元素?这怎么不一样:
test = ["", "", ""]
test[0] = "test"
print test
答案:['test', '', '']
在clearDict
def clearDict(self):
for key in self.test:
self.test[key] = ""
您正在将字典元素设置为空字符串。我想你想要这样的东西:
def clearDict(self):
for key in self.test:
for l in self.test[key]:
self.test[key][l] = ""
嗯,因为在创建 x
之后,您调用 clearDict
将 x.test
更改为 {"color": '', "incandescence": ''}
因此,当之后调用 setTest
时,您试图将字典中空字符串值的第一个元素设置为 "TEST"
,但失败了,因为字符串是不可变的。
问题出在您的 clearDict 方法中...您正在将 self.test[key] 的值设置为字符串
self.test[key] = ""
一旦你这样做,你就不能为字符串的一部分设置索引...如果你改变你的方法来创建一个新列表,你会更幸运。
self.test[key] = []
备注
顺便说一句,您可以像这样初始化,而不是使用 [0] 符号来设置第 0 个元素:
def __init__(self):
self.test = { "color": [], "incandescence": [] }
然后简单地附加到您的列表中以添加项目
def set_test(self):
self.test["color"].append("TEST")
无需确切知道列表中有多少元素即可获得相同的结果。