如何使用变量访问嵌套python词典中的键值?

时间:2019-05-03 21:41:18

标签: python python-3.x

我正在使用this QA中的方法清理一些ROS机器人代码。这与ROS无关。

这是原始代码:

 data = []
 data.append(sensor[thermo].data.thermo)
 data.append(sensor[imu].data.imu.x)
 data.append(sensor[imu].data.imu.rotation.x)

现在,我有一个包含所有主题的元组列表,因此我可以循环浏览:

topics = [('thermo', 'thermo'),
          ('imu', 'imu.x')
          ('imu', 'imu.rotation.x')]

和:

for sensor, topic in topics:
    data.append(getattr[sensor].data, topic)

这适用于thermo,但不适用于imu,并且出现以下错误:

  

AttributeError:“ imu”对象没有属性“ x”

如何解决getattr语句以达到此处的目标?

1 个答案:

答案 0 :(得分:1)

可以使用reduce中的功能functools

reduce(getattr, "att1.att2.att3".split('.'), sensor[imu])