[問題] 關於dict取值

作者: snowing98989 (大瑋)   2017-09-20 10:06:08
各位前輩好
小弟是python新手
開發環境是ubuntu14.04 python3.4
目前有個問題想請教
假設有一個名稱為test的dict長這樣
{
"aaa": "123",
"bbb": "456",
"ccc": "789",
"ddd": "000",
"dog": {
"ccc": "apple"
},
"cat": {
"ccc": "banana"
},
"elephant": {
"ccc": "mouse"
},
"hello": "duck",
"hi": {
"ccc": "eleven"
},
"gg": {
"end": {
"ccc": "over"
}
}
}
我想要取"ccc"後面的值,像是789,apple那些
可是當我用test.get("ccc")的話只會出現789
然後我用for迴圈把"ccc"這個key代入取值
發現只有出現789這個值
而當我print(test.keys())發現只有最外面那個"ccc"是key
其他的"ccc"都是value
請問有什麼方法能讓我取得所有"ccc": 後面的值呢
我是有去找過nested dictionaries
可是我發現好像跟我這個dict不太一樣
先謝謝各位前輩幫忙解答
作者: stucode   2017-09-20 10:15:00
可以用遞迴的方式把所有ccc挖出來。
作者: snowing98989 (大瑋)   2017-09-20 10:23:00
想請問大概要怎麼用遞迴實現呢?是要另外寫個function然後來抓取ccc:後面的值嗎?
作者: stucode   2017-09-20 10:26:00
先做個把一層dict中的ccc取出來的函數,假設叫get_ccc()然後在get_ccc()取值的過程中,如果發現值是字典,就再
作者: anotherday   2017-09-20 10:28:00
判斷value是不是dict, 如果是就看有沒有ccc
作者: stucode   2017-09-20 10:28:00
遞迴呼叫get_ccc()並記下結果,最後合併起來就是答案。
作者: snowing98989 (大瑋)   2017-09-20 10:32:00
先謝謝各位解答,我先來試試看成功了,之前都沒想到這個方法,可能思考得不夠全面如果以後還有問題也請各位前輩幫忙解答,謝謝
作者: mikapauli (桜花)   2017-09-20 13:19:00
轉成str再自己寫parser
作者: snowing98989 (大瑋)   2017-09-20 15:17:00
謝謝 我也會試試看這種方法的

Links booklink

Contact Us: admin [ a t ] ucptt.com