如何通过PyQt对象存储的可变长度键列表向现有字典迭代赋值
实现任意长度键列表的嵌套字典迭代赋值
你可以通过逐层遍历键列表定位到嵌套字典的最后一级,再完成赋值,无需手动适配不同长度的键列表:
for obj in objects_list: # 获取当前对象存储的键列表 keys = obj.property('keys') # 初始化当前层级为顶层字典 current_level = di_end # 遍历除最后一个键外的所有键,逐层进入嵌套层级 for key in keys[:-1]: current_level = current_level[key] # 对最后一个键赋值 current_level[keys[-1]] = obj.value
注意事项
- 上述代码的前置条件和你原有手动赋值逻辑一致:
di_end中所有键列表对应的前置层级字典已经提前创建完成,不会出现KeyError - 如果存在前置层级可能未创建的场景,可以将层级遍历代码替换为
current_level = current_level.setdefault(key, {}),会自动为不存在的键创建空字典作为值 - 原代码中
a.property(['keys'])存在参数错误,PyQt的property()方法要求传入属性名字符串,正确写法为a.property('keys'),上述代码已修正该问题
内容的提问来源于stack exchange,提问作者Vin
相关产品推荐
相关产品推荐

