第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

將元素追加到雙嵌入式字典將添加到所有父元素

將元素追加到雙嵌入式字典將添加到所有父元素

動漫人物 2022-09-27 10:51:33
我對一個(gè)我無法弄清楚的問題有點(diǎn)難倒,我覺得這應(yīng)該是一個(gè)微不足道的問題。我有一個(gè)班級預(yù)算的元素預(yù)算。在此類中,它有一個(gè)包含 Section 類對象的字典節(jié)。在章節(jié)類中,我有另一個(gè)字典,稱為津貼類對象的津貼。在“津貼”類中,我有一個(gè)名為“操作”的列表,我想向其添加操作類對象。層次結(jié)構(gòu)如下,對于那些更直觀的:預(yù)算 -> 款次 -> 津貼 -> 業(yè)務(wù)我想將操作類對象附加到節(jié)和允許的特定組合(使用的變量name_of_section和name_of_operation。我的第一次嘗試是budget.sections[name_of_section].allowances[name_of_allowance].operations.append(Operation(name=name,                                                                                           cost=cost, date=date)由于某種未知的原因,它將操作對象添加到我的所有部分和允許元素,我無法弄清楚原因。我嘗試將方法add_operation()添加到 Section,該方法使用add_operation()到“津貼”的方法,但它只是不斷將每個(gè)操作添加到我的所有節(jié)和津貼元素中。最奇怪的是,我在津貼中還有一個(gè)列表關(guān)鍵字,它意味著一個(gè)字符串列表。我稍后以完全相同的方式附加一個(gè)字符串:budget.sections[name_of_section].allowances[name_of_allowance].keywords.append(keyword_str)它只會增加適當(dāng)?shù)牟糠趾徒蛸N。有沒有人知道為什么當(dāng)我嘗試將我的操作對象附加到列表中時(shí),它會添加到所有列表中,盡管當(dāng)我附加到str列表時(shí),它只會添加到單個(gè)和適當(dāng)?shù)牧斜碇??這是我的預(yù)算初始化和添加津貼的方法,該津貼根據(jù)需要添加一個(gè)部分。def __init__(self):    self.sections = {"Income": Section(name = "Income")}    self.total_balance = 0.0    self.unsorted_operations = []def add_allowance(self, name, section, projected_cost = 0.0, frequency = "monthly"):    if section in self.sections:        self.sections[section].new_allowance(name=name, section=section, projected_cost = projected_cost,                                             frequency = frequency)    else:        self.add_section(name = section)        self.sections[section].new_allowance(name=name, section=section, projected_cost=projected_cost,                                             frequency=frequency)我的 Section 類以這種方式初始化,_new_allowance()_ 方法是:def __init__(self, name):    self.name = name    self.allowances = dict()    self.calculate_projected_cost()def new_allowance(self, name, section, projected_cost, frequency = 'monthly'):    self.allowances[name] = Allowance(name = name, section = section, projected_cost = projected_cost,                                      frequency = frequency)    self.calculate_projected_cost()
查看完整描述

2 回答

?
明月笑刀無情

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊

事實(shí)證明,這可能是我保存的JSON文件的問題,我從中加載了我的對象。正如J_H建議使用的,這些元素是相同的。這個(gè)提示在調(diào)試我的問題時(shí)非常有用。budgetid(x)

在沒有對代碼進(jìn)行任何更改的情況下,并且從頭開始而不是加載我的JSON文件,我沒有再次看到這種行為。我保存了它,停止了程序,再次運(yùn)行它并加載了我新保存的文件,現(xiàn)在,它正在按預(yù)期運(yùn)行。


查看完整回答
反對 回復(fù) 2022-09-27
?
墨色風(fēng)雨

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊

我不知道你是如何創(chuàng)建數(shù)據(jù)結(jié)構(gòu)的,因?yàn)槟銢]有發(fā)布那個(gè)代碼。


但是你的癥狀清楚地表明你做了這樣的事情:


>>> a = ['apple']

>>> fruit = [a, a, a]

>>> a.append('banana')

>>> fruit

[['apple', 'banana'], ['apple', 'banana'], ['apple', 'banana']]

也就是說,您有一個(gè)內(nèi)部可變?nèi)萜鳎ɑ蝾愃茖ο螅⑶夷耐獠咳萜骶哂袑υ搯蝹€(gè)內(nèi)部容器的多個(gè)引用。假設(shè)您顯示外部容器?,F(xiàn)在,您更改了內(nèi)部容器(如上所示),這將影響多個(gè)位置的顯示輸出,因?yàn)槟卸鄠€(gè)對更改內(nèi)容的引用。a


如果您對細(xì)節(jié)感到好奇,可以使用例如 以查看元素是相同還是不同。python函數(shù)大致相當(dāng)于一個(gè)C程序,詢問在哪個(gè)地址進(jìn)行存儲以進(jìn)行分配。print(list(map(id, fruit)))id(x)x


查看完整回答
反對 回復(fù) 2022-09-27
  • 2 回答
  • 0 關(guān)注
  • 92 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號