[問題] 關於dict取值

看板Python作者 (娜璉狂熱份子)時間6年前 (2017/09/20 10:06), 編輯推噓1(1011)
留言12則, 4人參與, 最新討論串1/1
各位前輩好 小弟是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不太一樣 先謝謝各位前輩幫忙解答 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.210.83 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1505873173.A.F8A.html

09/20 10:15, , 1F
可以用遞迴的方式把所有ccc挖出來。
09/20 10:15, 1F

09/20 10:23, , 2F
想請問大概要怎麼用遞迴實現呢?
09/20 10:23, 2F

09/20 10:24, , 3F
是要另外寫個function然後來抓取ccc:後面的值嗎?
09/20 10:24, 3F

09/20 10:26, , 4F
先做個把一層dict中的ccc取出來的函數,假設叫get_ccc()
09/20 10:26, 4F

09/20 10:27, , 5F
然後在get_ccc()取值的過程中,如果發現值是字典,就再
09/20 10:27, 5F

09/20 10:28, , 6F
判斷value是不是dict, 如果是就看有沒有ccc
09/20 10:28, 6F

09/20 10:28, , 7F
遞迴呼叫get_ccc()並記下結果,最後合併起來就是答案。
09/20 10:28, 7F

09/20 10:32, , 8F
先謝謝各位解答,我先來試試看
09/20 10:32, 8F

09/20 11:16, , 9F
成功了,之前都沒想到這個方法,可能思考得不夠全面
09/20 11:16, 9F

09/20 11:16, , 10F
如果以後還有問題也請各位前輩幫忙解答,謝謝
09/20 11:16, 10F

09/20 13:19, , 11F
轉成str再自己寫parser
09/20 13:19, 11F

09/20 15:17, , 12F
謝謝 我也會試試看這種方法的
09/20 15:17, 12F
文章代碼(AID): #1PmSqL-A (Python)