欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決python字典對(duì)值(值為列表)賦值出現(xiàn)重復(fù)的問(wèn)題

 更新時(shí)間:2019年01月20日 11:48:49   作者:wang_kmin  
今天小編就為大家分享一篇解決python字典對(duì)值(值為列表)賦值出現(xiàn)重復(fù)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

可能很少有人遇到這個(gè)問(wèn)題,網(wǎng)上也沒(méi)找到,這里記錄一下,希望也可以幫到其他人。

問(wèn)題描述:假設(shè)有一個(gè)字典data,其鍵不定,可能隨時(shí)添加鍵(這不是關(guān)鍵),某一個(gè)鍵下面對(duì)應(yīng)的值為一個(gè)長(zhǎng)度為10的list,初始化為0,然后我想修改某些鍵下面的列表中的某一個(gè)值,比如data有一個(gè)鍵'k',對(duì)應(yīng)的值為[0,0,0,0,0,0,0,0,0,0],現(xiàn)在我想把鍵'k'對(duì)應(yīng)的列表的第三個(gè)數(shù)改成3,即[0,0,3,0,0,0,0,0,0,0],可是意外的事情發(fā)生了,如果data還有一個(gè)鍵'k1',假設(shè)其值為[0,0,0,0,0,0,0,0,0,0],但是操作完之后,居然也跟著變成了[0,0,3,0,0,0,0,0,0,0]。

具體代碼如下:

data = {}
indexes = ['new','repeat']
ret = [{'i':1,'new':3,'repeat':11},{'i':3,'new':2,'repeat':6},
    {'i':4,'new':9,'repeat':2},{'i':9,'new':1,'repeat':8}]
y_axis = [0]*10
for e in ret:
  for index in indexes:
    if not data.has_key(index):
      data[index] = y_axis
  i = e['i']
  for index in indexes:
    data[index][i] = e[index]
print data

代碼不難看懂,我感覺(jué)理論上應(yīng)該輸出:{'new': [0, 3, 0, 2, 9, 0, 0, 0, 0, 1], 'repeat': [0, 11, 0, 6, 2, 0, 0, 0, 0, 8]},但是事與愿違,輸出是:{'new': [0, 11, 0, 6, 2, 0, 0, 0, 0, 8], 'repeat': [0, 11, 0, 6, 2, 0, 0, 0, 0, 8]},感覺(jué)莫名其妙,于是準(zhǔn)備調(diào)試,先import pdb,再在需要打斷點(diǎn)的前一句加pdb.set_trace()即可,如下:

import pdb
data = {}
indexes = ['new','repeat']
ret = [{'i':1,'new':3,'repeat':11},{'i':3,'new':2,'repeat':6},
    {'i':4,'new':9,'repeat':2},{'i':9,'new':1,'repeat':8}]
y_axis = [0]*10
for e in ret:
  for index in indexes:
    if not data.has_key(index):
      data[index] = y_axis
  i = e['i']
  for index in indexes:
    pdb.set_trace()
    data[index][i] = e[index]
print data

接著,python test.py,到賦值data的鍵對(duì)應(yīng)的列表某一個(gè)值那一句:

python字典對(duì)值(值為列表)賦值出現(xiàn)重復(fù)

查看data和index值:

python字典對(duì)值(值為列表)賦值出現(xiàn)重復(fù)

正常。往下執(zhí)行一步,即執(zhí)行賦值操作,再查看data值:

python字典對(duì)值(值為列表)賦值出現(xiàn)重復(fù)

在這里真想來(lái)一句mdblgl,明明index是'new',明明是對(duì)data['new'][1]賦值,關(guān)data['repeat'][1]屁事,它跟著變什么?可想而知,后面對(duì)data['repeat'][1]再賦一個(gè)值11,那'new'的值不就也跟著一起變,結(jié)果就是得到了最后那個(gè)莫名其妙的結(jié)果。

試過(guò)很多辦法,想過(guò)很多原因,無(wú)賴(lài)才疏學(xué)淺,不知道是什么原理,最后,只好用一種非常笨的方法解決了:

data = {}
indexes = ['new','repeat']
ret = [{'i':1,'new':3,'repeat':11},{'i':3,'new':2,'repeat':6},
    {'i':4,'new':9,'repeat':2},{'i':9,'new':1,'repeat':8}]
y_axis = [0]*10
tmp = y_axis*len(indexes)
for k in range(len(indexes)):
  for e in ret:
    i = e['i']
    tmp[i+len(y_axis)*k] = e[indexes[k]]
for k in range(len(indexes)):
  data[indexes[k]] = tmp[(k*len(y_axis)):((k+1)*len(y_axis))]
print data

在此,希望知道為什么這樣的大佬指點(diǎn)一下,萬(wàn)分感謝!

以上這篇解決python字典對(duì)值(值為列表)賦值出現(xiàn)重復(fù)的問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python dict的常用方法示例代碼

    Python dict的常用方法示例代碼

    這篇文章主要介紹了Python dict的常用方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • python 已知三條邊求三角形的角度案例

    python 已知三條邊求三角形的角度案例

    這篇文章主要介紹了python 已知三條邊求三角形的角度案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • python使用xlsxwriter實(shí)現(xiàn)有向無(wú)環(huán)圖到Excel的轉(zhuǎn)換

    python使用xlsxwriter實(shí)現(xiàn)有向無(wú)環(huán)圖到Excel的轉(zhuǎn)換

    這篇文章主要為大家詳細(xì)介紹了python使用xlsxwriter實(shí)現(xiàn)有向無(wú)環(huán)圖到Excel的轉(zhuǎn)換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Python使用微信接入圖靈機(jī)器人過(guò)程解析

    Python使用微信接入圖靈機(jī)器人過(guò)程解析

    這篇文章主要介紹了Python使用微信接入圖靈機(jī)器人過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 理解python正則表達(dá)式

    理解python正則表達(dá)式

    這篇文章主要介紹了python正則表達(dá)式,在python中,對(duì)正則表達(dá)式的支持是通過(guò)re模塊來(lái)支持的,想要了解python正則表達(dá)式的朋友可以參考一下
    2016-01-01
  • Python+django實(shí)現(xiàn)文件上傳

    Python+django實(shí)現(xiàn)文件上傳

    本系列以可操作性為主,介紹如何通過(guò)django web框架來(lái)實(shí)現(xiàn)一些簡(jiǎn)單的功能。每一篇文章都具有完整性和獨(dú)立性。使用新手在動(dòng)手做的過(guò)程中體會(huì)web開(kāi)發(fā)的過(guò)程,過(guò)程中細(xì)節(jié)請(qǐng)參考相關(guān)文檔。
    2016-01-01
  • Python實(shí)現(xiàn)簡(jiǎn)易凱撒密碼的示例代碼

    Python實(shí)現(xiàn)簡(jiǎn)易凱撒密碼的示例代碼

    密碼的使用最早可以追溯到古羅馬時(shí)期,《高盧戰(zhàn)記》有描述愷撒曾經(jīng)使用密碼來(lái)傳遞信息,即所謂的“愷撒密碼”。本文將利用Python實(shí)現(xiàn)簡(jiǎn)易的凱撒密碼,感興趣的可以了解一下
    2022-09-09
  • Pandas之Dropna濾除缺失數(shù)據(jù)的實(shí)現(xiàn)方法

    Pandas之Dropna濾除缺失數(shù)據(jù)的實(shí)現(xiàn)方法

    這篇文章主要介紹了Pandas之Dropna濾除缺失數(shù)據(jù)的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 淺談Python中的函數(shù)(def)及參數(shù)傳遞操作

    淺談Python中的函數(shù)(def)及參數(shù)傳遞操作

    這篇文章主要介紹了淺談Python中的函數(shù)(def)及參數(shù)傳遞操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Tensorflow的梯度異步更新示例

    Tensorflow的梯度異步更新示例

    今天小編就為大家分享一篇Tensorflow的梯度異步更新示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01

最新評(píng)論