我将以下树(tree_1,tree_2,tree_3)存储在字典(dict_1,dict_2,dict_3)中。如何递归遍历树的所有路径,收集从根到每个分支的最后一个节点的所有节点?
换句话说,我想为所有树分支(字典)生成所有可能的节点序列列表。例如,dict_1(tree_1)的一些可能分支是:
[["FunctionDef", "try", "ExceptHandler", "Expr", "Call", "Attribute","Load"],
["FunctionDef", "try", "ExceptHandler", "Expr", "Call", "Attribute","save_dictionary"],
["FunctionDef", "try", "ExceptHandler", "Expr", "Call", "Attribute","Name", "self"],
...,
["FunctionDef", "arguments", "arg", "self"]]
Run Code Online (Sandbox Code Playgroud)
到目前为止,从上一个问题开始,我尝试:
def foo(nested_dict, c = []):
for i in ['left', 'op', 'right', 'func', 'value', 'args', 'ctx',
'body', 'comparators', 'ops', 'test', 'orelse', 'targets', 'slice', 'n', 'id', '_type']:
if i in nested_dict:
if isinstance(nested_dict[i], list):
for b in nested_dict[i]: …Run Code Online (Sandbox Code Playgroud) 当且仅当用户按下 ctrl 键时如何不确定地录制用户的音频并在用户按下 ctrl+c 键时关闭录制循环?到目前为止,基于一些在线示例构建了这个脚本:
from pynput import keyboard
import time, os
import pyaudio
import wave
import sched
import sys
from playsound import playsound
CHUNK = 8192
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
WAVE_OUTPUT_FILENAME = "mic.wav"
p = pyaudio.PyAudio()
frames = []
def callback(in_data, frame_count, time_info, status):
frames.append(in_data)
return (in_data, pyaudio.paContinue)
class MyListener(keyboard.Listener):
def __init__(self):
super(MyListener, self).__init__(self.on_press, self.on_release)
self.key_pressed = None
self.wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
self.wf.setnchannels(CHANNELS)
self.wf.setsampwidth(p.get_sample_size(FORMAT))
self.wf.setframerate(RATE)
def on_press(self, key):
try:
if key.ctrl:
self.key_pressed = …Run Code Online (Sandbox Code Playgroud)