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

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

python 實(shí)現(xiàn)一個(gè)求解當(dāng)前數(shù)據(jù)所有子項(xiàng)的方法

python 實(shí)現(xiàn)一個(gè)求解當(dāng)前數(shù)據(jù)所有子項(xiàng)的方法

皈依舞 2019-05-12 11:21:23
假設(shè)數(shù)據(jù)結(jié)構(gòu)是這樣的:有多條數(shù)據(jù),每條數(shù)據(jù)都有屬性parent(指向它的所屬上級(jí)id),自身的唯一標(biāo)識(shí)id。classdataparentid當(dāng)我拿出其中一條數(shù)據(jù)的時(shí)候,用一個(gè)方法計(jì)算出所有下級(jí)數(shù)據(jù)。就好比中國行政區(qū)數(shù)據(jù)一樣,當(dāng)我拿到廣東省的時(shí)候,下面的市級(jí),縣級(jí)都要得到,如果縣級(jí)下面還有分級(jí)也要一并拿到。我寫了一些代碼,都太丑陋了,似乎是要用遞歸,求教一下有沒有什么好的思路?
查看完整描述

2 回答

?
慕絲7291255

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

這個(gè)問題可以轉(zhuǎn)換成N叉樹的遍歷,將某個(gè)節(jié)點(diǎn)的所有子節(jié)點(diǎn)計(jì)算出來。
defreturn_all_children(self):
"""
返回所有的子項(xiàng)
:return:
"""
root=self
ifnotroot:
return[]
que=[]#保存節(jié)點(diǎn)的隊(duì)列
res=[]#保存結(jié)果的列表
que.append(root)#
whilelen(que):#判斷隊(duì)列不為空
length=len(que)
sub=[]#保存每層的節(jié)點(diǎn)的值
foriinrange(length):
current=que.pop(0)#出隊(duì)列的當(dāng)前節(jié)點(diǎn)
print(current)
sub.append(current)
forchildincurrent.return_children:#所有子結(jié)點(diǎn)入隊(duì)列
que.append(child)
res.append(sub)#把每層的節(jié)點(diǎn)的值加入結(jié)果列表
returnres
                            
查看完整回答
反對 回復(fù) 2019-05-12
?
胡子哥哥

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

儲(chǔ)存空間夠大的話可以建立一個(gè)字典假如你的數(shù)據(jù)是個(gè)list名字叫CN(中國所有省市縣...)
parent_d={}
foriteminCN:
parent=item['parent']
ifparentinparent_d:
parent_d[parent].append(item['id'])
else:
parent_d[parent]=[item['id']]
之后遍歷一下
defget_all_children(city_id,parent_d):
ifcity_idnotinparent_dornotcity_id:
return[]
result=[]
temp_parent=[city_id]
whiletemp:
cur_id=temp_parent.pop(-1)
result+=parent_d[cur_id]
temp_parent=parent_d[cur_id]+temp_parent
returnresult
                            
查看完整回答
反對 回復(fù) 2019-05-12
  • 2 回答
  • 0 關(guān)注
  • 459 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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