【问题标题】:Accessing item in tuple nested in dictionary python访问嵌套在字典python中的元组中的项目
【发布时间】:2016-06-24 20:47:36
【问题描述】:

所以我对function 返回的字典有点困惑。 (endpoint_pose函数)

它似乎是一个字典,我不确定是嵌套字典还是元组。函数返回的是这个

{'position': Point(x=0.7938064310002948, y=0.4000015952566877, z=0.28522708748065545), 'orientation': Quaternion(x=-0.18674837754140436, y=0.7484662663927322, z=-0.5955181308876427, w=0.22423524999844527)}

如何访问 z 坐标位置?

【问题讨论】:

标签: python dictionary indexing nested tuples


【解决方案1】:

你得到的是一个带有namedtuples 的字典,所以要访问 z 元素,只需:

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y', 'z'])
Quaternion = namedtuple('Quaternion', ['x', 'y', 'z', 'w'])

mycoords = {
    'position': Point(x=0.7938064310002948, y=0.4000015952566877, z=0.28522708748065545),
    'orientation': Quaternion(x=-0.18674837754140436, y=0.7484662663927322, z=-0.5955181308876427, w=0.22423524999844527)
    }

print(mycoords['position'].z)  # -> 0.28522708748065545
print(mycoords['orientation'].z)  # -> -0.5955181308876427

【讨论】:

    【解决方案2】:

    结果看起来像一个带有对象的字典。看看 datetime 的样子:

    >>> import datetime
    >>> datetime.date.today()
    datetime.date(2016, 6, 24)
    

    访问对象中的变量z是一个简单的字典查找和访问属性:

    >>> result = {'position': Point(x=0.7938064310002948, y=0.4000015952566877, z=0.28522708748065545), 'orientation': Quaternion(x=-0.18674837754140436, y=0.7484662663927322, z=-0.5955181308876427, w=0.22423524999844527)}
    >>> result['position'].z
    0.28522708748065545
    

    祝你好运!

    编辑:@iron-fist 确实提供了有关字典中对象类型的良好信息。如果您想了解更多关于namedtuples 的信息,请查看铁拳的评论here

    【讨论】:

      【解决方案3】:

      假设Point 是一个具有z 属性的类(或namedtuple 或其他)(repr 可能具有欺骗性,但通常不是这样),您可以通过键查找,然后访问属性正常:

      mydict['position'].z
      

      【讨论】:

        【解决方案4】:

        您的链接实际上并没有转到任何功能(由于框架),但我猜你说的是这个:

        http://api.rethinkrobotics.com/baxter_interface/html/baxter_interface.limb.Limb-class.html#endpoint_pose

        无论哪种方式,该函数都会返回一个包含两个不同namedtuples 的字典。您可以通过以下方式访问 z 坐标位置:

        pose = limb.endpoint_pose()
        z_coord = pose['position'].z
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-09-29
          • 2018-02-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-19
          • 2019-06-20
          相关资源
          最近更新 更多