如何检索字典中键控项的子值?

时间:2019-01-08 14:40:58

标签: python dictionary key

我如何从a得到数字,什么?索引索引字典? (我什至不知道正确的用语)。

在这里仍然是一个相对的新手,但这是我第一次通过字典,虽然我理解了非常简单的基本概念,但是却缺少如何访问事物的方法。我的字典似乎以我想要的方式保存了我想要的数据,但是我在摸索如何访问它。

这是我的代码:

all_bone_keys[bone.GetName()][frame] = {"x":x[1], "y":y[1], "z":z[1]}
print (len(all_bone_keys["RL_Head"])
print (all_bone_keys["RL_Head"])

具有这些结果(一切正常):

2
{0: {'x': -0.4033583402633667, 'y': -0.08630772680044174, 'z': 0.4855811595916748}, 116: {'x': -0.13178503513336182, 'y': 0.3115540146827698, 'z': 0.2189643830060959}}

一切顺利-我有想要的数据,两个帧显示了我的x,y,z。我可以读取每个骨骼有多少个项目就好了,所以我知道有多少帧,如果我知道帧号,我什至可以访问x,y和z值:

print (all_bone_keys["RL_Head"][116]["x"])
-0.13178503513336182

但是首先如何获得116?我真正想知道的就是如何读取这些帧号,以便随后访问与它们关联的数据。

我看了无数的教程,但似乎都没有,因为它们几乎总是显示一个简单得多的字典示例。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您有多种选择,大部分可以在这里找到:https://docs.python.org/3/library/stdtypes.html#mapping-types-dict

在您的情况下:

  • 以获取键的字典视图,如注释中所述:

    for frame in all_bone_keys["RL_Head"].keys():
        print(frame, all_bone_keys["RL_Head"][frame]["x"])
    
  • 一次获取框架和坐标(我最喜欢的大多数应用程序):

    for frame, coord in all_bone_keys["RL_Head"].items():
        print(frame, coord["x"])
    
  • 以确保帧的顺序(https://mail.python.org/pipermail/python-dev/2017-December/151283.html):

    for frame in sorted(all_bone_keys["RL_Head"].keys()):
        print(frame, all_bone_keys["RL_Head"][frame]["x"])
    
  • 或仅使用list来检索简单键列表:

    for frame in list(all_bone_keys["RL_Head"]):
        print(frame, all_bone_keys["RL_Head"][frame]["x"])