[英]How to assign to a list in a dictionary
對不起,我搜索過這個,看起來很簡單,但我無法弄明白。 我正在嘗試將值分配給我的dict中的列表:
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()
為什么我不能將字符串分配給第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")
無需確切知道列表中有多少元素即可獲得相同的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.