Как получить подзначения ключевого элемента в словаре? - PullRequest
0 голосов
/ 08 января 2019

Как мне получить цифры от, что? субиндексированный словарь? (Я даже не знаю правильных терминов здесь).

Все еще относительный новичок здесь, но это мой первый проход в словаре, и хотя я понимаю очень простую базовую концепцию, мне не хватает доступа к вещам. Кажется, в моем словаре хранятся данные, которые я хочу, так, как я хочу, но я пытаюсь понять, как получить к ним доступ.

Вот мой код:

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 голосов
/ 08 января 2019

У вас есть несколько вариантов, большинство из которых можно найти здесь: 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"])
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...