Если я понял твой вопрос, ты хочешь построить древо-виджет из дикта? Если это так, то это очень быстрый пример с Pyside2 (я думаю, что нет проблем с PyQt5 для Treewidget).
data = {
'deadpool':{
'Backup': {},
'Photos': {
'Foobar': {}
}
}
}
def build_tree(data=None, parent=None):
for key, value in data.items():
item = QTreeWidgetItem(parent)
item.setText(0, key)
if isinstance(value, dict):
build_tree(data=value, parent=item)
window = QWidget()
layout = QVBoxLayout()
window.setLayout(layout)
treewidget = QTreeWidget()
build_tree(data=data, parent=treewidget)
layout.addWidget(treewidget)
window.show()
Если вы просто хотите преобразовать свой список в dict, чтобы использовать его в treewidget вы можете попробовать это:
data = ['deadpool','deadpool/Backup','deadpool/Photos','deadpool/Photos/Foobar']
tree = {}
for path in data: # for each path
node = tree # start from the very top
for level in path.split('/'): # split the path into a list
if level: # if a name is non-empty
node = node.setdefault(level, dict())
# move to the deeper level
# (or create it if unexistent)
print(tree)
Этот код выше из этого топи c: Stackoverflow
И теперь у вас есть возможность использовать с Первый блок c кода!
Надеюсь, он вам поможет!