0
我有一個帶有三個鍵的字典對象。每個鍵包含三個RGB值。爲什麼我的列表不能在Python 2.7中正確創建?
>>> dictObj = {}
>>> dictObj['key1'] = ["123,12,43", "42,34,1", "38,225,132"]
>>> dictObj['key2'] = ["234,92,109", "227,5,229", "156,4,2"]
>>> dictObj['key3'] = ["15,123,82", "128,11,130", "78,39,1"]
我的目標是把RGB值的每個鍵的名單,並採取每個項目,每個項目的每個項目的G和B中的R創建三個列表,只包含所有三個的R值鍵,所有三個鍵的G值和所有三個鍵的B值。
我實現了一系列for循環來調用每個鍵,將每個鍵的列表中的項目拆分,並嘗試將R,G和B值附加到每個相應的列表。
>>> rList=gList=bList=[]
>>> for key in dictObj:
for RGBval in dictObj[key]:
RGBval = RGBval.split(',')
rList.append(RGBval[0])
gList.append(RGBval[1])
bList.append(RGBval[2])
我運行循環,但是每個列表都包含完全相同的值。我不明白爲什麼會發生這種情況。如果我在循環內打印RGBval [0],RGBval [1]和RGBval [2],則每次迭代顯示不同的不同值。但是,當三個列表通過append方法創建時,每個列表包含完全相同的值,這是我的輸出。
>>> print rList
['123', '12', '43', '42', '34', '1', '38', '225', '132', '15', '123'...etc]
>>> print gList
['123', '12', '43', '42', '34', '1', '38', '225', '132', '15', '123'...etc]
>>> print bList
['123', '12', '43', '42', '34', '1', '38', '225', '132', '15', '123'...etc]
如何創建我的列表以便它們包含每個列表的相應值? IE,rList,list只包含每個鍵的列表項的R值,gList只包含每個鍵的列表項的G值,等等?
感謝您的輸入!
我剛測試過這個。它非常完美!在代碼高爾夫球賽中使用這種類型的聲明後,我認爲自己很聰明。我改變了事情,我的代碼按預期工作。謝謝噸牛仔。當它讓我,我會接受你的答案。 – 0xhughes 2014-10-27 02:48:57
@ 0xhughes:另請參閱常規的Ned Batchelder的文章[關於Python名稱和值的事實和神話](http://nedbatchelder.com/text/names.html)和http://stackoverflow.com/q/1132941/4014959 – 2014-10-27 06:54:55