Я пишу программу и должен использовать эту функцию для добавления зависимостей в xml-файл. Этот код работает, но я хотел бы спросить, есть ли более питонический способ сделать это.Итерация по словарю при повторении словарного списка в Python
Часть, которую, я считаю, я делаю непитоновым способом, представляет собой вложенный цикл. Есть ли лучший способ перебора списка словарей и каждого значения?
def add_Dependencies(self):
""" Adds the dependencies in a feature using dictionaries. When
a feature is loaded, its dependencies are added to
dictionaries. Three for each type of software that the
dependencies are categorized as."""
dependency_dict_list = [
self.os_dict, self.visual_dict, self.audio_dict
]
dependencies = self.dependencies
for dictionary in dependency_dict_list:
for feature, software in dictionary.items():
if all(dependency.text != feature for dependency in dependencies):
etree.SubElement(dependencies,"Dependency", Software = software).text = feature
Там нет абсолютно ничего unpythonic о вложенных для петель. Ваш код может быть реорганизован для использования понятий, если вы хотите, но поскольку самый внутренний оператор является побочным эффектом и не предназначен для возврата значения, было бы неразумно, например, оберните его в лямбду или что-то просто, чтобы это могло произойти в понимании. Я считаю, что ваш метод с петлями - это чистый, хороший, легко читаемый код, и, вероятно, это не очень удобно использовать для создания так называемого «pythonic». – ely
Является ли 'self.dependencies' пустым до вызова этой функции? Похоже, что у вас будет гораздо более быстрый код, если вы сначала объедините несколько словарей (используя структуру данных с поиском ключевых слов O (1)) и только потом создайте XML-элементы. – Blckknght
@Blckknght self.dependencies будет объектом lxml (должен был указать, что.) Зависимость в зависимостях - это дети. Я посмотрю на это. –