Это совсем не интуитивно понятно.
Единственный способ сохранить «несколько значений» для данного ключа в словаре - это сохранить в качестве значения некоторый объект-контейнер, такой как список или кортеж.Вы можете получить доступ к списку или кортежу, подписавшись на него, как и в первом примере.
Единственная проблема в вашем примере - это то, что это уродливый и неудобный способ доступа к такому контейнеру, когда он используется в этомпуть.Попробуйте это так, и вы, вероятно, будете намного счастливее:
>>> alist = [1, 2, 3]
>>> one, two, three = alist
>>> one
1
>>> two
2
>>> three
3
>>>
Таким образом, ваш второй пример может быть таким:
for key, value in names.items():
posX, posY, posZ = value
Как указывает FabienAndre в комментарии ниже, естьтакже более удобный синтаксис, о котором я полностью забыл, for key,(posX,posY,posZ) in names.items():
.
Вы не указываете, откуда вы получаете эти значения, но если они приходят из кода, который вы контролируете, ивы можете зависеть от использования Python 2.6 или новее, вы также можете заглянуть в именованные кортежи .Затем вы можете указать именованный кортеж в качестве значения dict и использовать синтаксис pos.x
, pos.y
и т. Д. Для доступа к значениям:
for name, pos in names.items():
doSomethingWith(pos.x)
doSomethingElseWith(pos.x, pos.y, pos.z)