小白教程

 找回密码
 立即注册
查看: 6019|回复: 2

[已回复] 子字典路径为变量

[复制链接]

5

主题

9

帖子

31

积分

新手上路

Rank: 1

积分
31
发表于 2021-5-18 00:19:12 | 显示全部楼层 |阅读模式
我正在使用不同级别的子词典来对数据类型进行排序(在目录和子目录的相同概念下);它工作正常。要更新或添加新的结构,我需要明确提供以下结构
  1. MyDict[subdict][subsubdict].update(Newdict)
复制代码
在前面的示例中,所有内容都是可变的;我想知道这是否是一种通过变量替换我在这里所说的“路径”的方法,即用“ path = [subdict] [subsubdict]”替代一种“ [subdict] [subsubdict]”吗?
当然我可以使用下一个代码,但是最好避免使用它,不是吗?

  1. path = '[subdict][subsubdict]'
  2. exec("MyDict%s.update(Newdict)" % path )
复制代码


本帖寻求最佳方案

回复被采纳后将获得奖励 C币 5 ,目前已有 2 个回复 我要奖励
回复

使用道具 举报

0

主题

1

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-5-18 00:20:27 | 显示全部楼层
如果使用“路径”,则表示键列表:path = ["subdict", "subsubdict"]。那么您可以执行以下操作:
  1. mydict = {"subdict": {"subsubdict": {'a': 1}}}

  2. #explicit
  3. print(mydict["subdict"]["subsubdict"])

  4. #path traversal
  5. path = ["subdict", "subsubdict"]
  6. s = mydict
  7. for element in path:
  8.     s = s[element]
  9. print(s)
复制代码


回复

使用道具 举报

0

主题

7

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2021-5-18 00:20:59 | 显示全部楼层
在Python中,一切都是对象,因此您可以根据需要传递它们
  1. >>> d = {'a': {'b': {'c': 1}}}
  2. >>> nested = d['a']['b']
  3. >>> nested.update({'d':2})
  4. >>> nested
  5. {'c': 1, 'd': 2}
  6. >>> d
  7. {'a': {'b': {'c': 1, 'd': 2}}}
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|小白教程 ( 粤ICP备20019910号 )

GMT+8, 2024-9-20 15:04 , Processed in 0.030483 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表