我想知道是否有一種Python式的方法來壓縮這個嵌套的for循環:dict = { "keyA": { "subkey1": { "A1a": "frog", "A1b": "dog", "A1c": "airplane" } }, "keyA": { "subkey2": { "A2a": "cat" } }, "keyB": { "subkey1": { "B1a": "Zorba", "B1q": ["popcorn", -34] } }, "keyB": { "subkey2": { "B2z": "A Man A Plan A Canal", "B2e": "armadillo", "B2w": [1, 3, "jump"] } }, "keyC": { "subkey1": { "C1a": 3.14, "C1z": { "aaa": "dishwater", "bbb": "Dishwalla" }, "C1x": "bat" } }, "keyC": { "subkey2": { "C2a": None, "C2b": 123 } }}for key in dict.keys(): for subsubkey in dict[key]["subkey2"].keys(): print(key+":"+subsubkey)輸出:keyA:A2akeyB:B2zkeyB:B2ekeyB:B2wkeyC:C2akeyC:C2b
1 回答

阿晨1998
TA貢獻2037條經驗 獲得超6個贊
解決這個問題的一種 Pythonic 方法是使用列表理解。這允許您在一行中定義一個列表,遵循for
您已經布置的循環結構。工作版本可能類似于:
final_keys?=?[(first_key,?second_key)?for?first_key?in?dict.keys()?for?second_key?in?dict[first_key]['subkey2'].keys()]
輸出(從您的數據集):
[('keyA',?'A2a'),?('keyB',?'B2z'),?('keyB',?'B2e'),?('keyB',?'B2w'),?('keyC',?'C2a'),?('keyC',?'C2b')]
添加回答
舉報
0/150
提交
取消