2016-06-24 4 views
0

그래서이 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 좌표 위치에 액세스 할 수 있습니까?

+0

@ restaurant ... 아래에 제공된 답변에 문제가 있습니까? ... 아무도 문제를 해결하지 못하면 피드백을 보내주십시오 ..? –

답변

0

결과의 모습을 객체가있는 사전처럼. 날짜 모양을 봐 :

>>> 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 

행운을 빕니다 :

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

이 객체 변수 Z 액세스하려면 간단한 사전 조회 및 속성에 접근입니다!

편집 : @ iron-fist는 사전에있는 개체 유형에 대한 좋은 정보를 제공합니다. namedtuples에 대해 자세히 알아 보려면 Iron Fist의 의견 here을 확인하십시오.

0

z 속성합니다 (repr가 속이고, 그러나 보통이 마음에 들지 될 수있다)로 Point 클래스라고 가정 (또는 namedtuple 또는 무엇이든), 당신은 키를 찾아 볼 수 있습니다, 다음 액세스는 일반적으로 속성 :

mydict['position'].z 
0

귀하의 링크는 실제로 기능 (때문에 프레임)로 이동하지 않습니다,하지만 난 당신이 말하고있는이 하나 같은데요 :

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

어느 쪽이든이 함수는 두 개의 다른 namedtuple이 포함 된 사전을 반환합니다. 단순히 때문에 Z-요소에 액세스 할

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

당신이 수익으로 얻을 것은 namedtuple의 사전은 다음과 같습니다 : 당신은 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)} 
>>> 
>>> 
>>> mycoords['position'].z 
0.28522708748065545 
>>> 
>>> 
>>> mycoords['orientation'].z 
-0.5955181308876427