Вот как я это сделал.
Эта функция рекурсивно ищет словарь, содержащий вложенные словари и списки. Он создает список с именем fields_found, который содержит значение для каждого момента поиска поля. «Поле» - это ключ, который я ищу в словаре и его вложенных списках и словарях.
def get_recursively(search_dict, field): """Takes a dict with nested lists and dicts, and searches all dicts for a key of the field provided. """ fields_found = [] for key, value in search_dict.iteritems(): if key == field: fields_found.append(value) elif isinstance(value, dict): results = get_recursively(value, field) for result in results: fields_found.append(result) elif isinstance(value, list): for item in value: if isinstance(item, dict): more_results = get_recursively(item, field) for another_result in more_results: fields_found.append(another_result) return fields_found
Я постараюсь объяснить это как можно проще.
A1: cur
является именем переменной и указывает на объект Node
в памяти. То же самое относится и к dummy
, это указатель на объект в памяти.
A2: Поскольку вы делаете cur = dummy = Node(7)
, вы присваиваете обеим переменным один и тот же объект в памяти. Таким образом, когда он изменяется, обе переменные, указывающие на него, заметят это изменение. Но, поскольку на шаге 4 вы объявляете два объекта Node
и назначаете их различным переменным, они изменятся независимо.
A3: это физическая область памяти на диске.