我想要做的是从一个键获得3个值到单独的变量.目前我这样做:
for key in names:
posX = names[key][0]
posY = names[key][1]
posZ = names[key][2]
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎不太直观,即使它有效.我也试过这样做:
for key, value in names:
location = value
Run Code Online (Sandbox Code Playgroud)
不幸的是,这给了我一个单独的对象(这是我的预期),但我需要分配给键的各个值.感谢并为我对Python的新见道歉.
更新 抱歉没有指定我从哪里获取我的值.以下是我为第一个例子做的事情.
names = {}
for name in objectNames:
cmds.select(name)
location = cmds.xform(q=True, ws=True, t=True)
names[name] = location
Run Code Online (Sandbox Code Playgroud)
Nic*_*ght 11
这根本不是不直观的.
在字典中为给定键存储"多个值"的唯一方法是将某种容器对象存储为值,例如列表或元组.您可以通过下标来访问列表或元组,就像在第一个示例中一样.
您的示例唯一的问题是,当以这种方式使用时,访问此类容器是一种丑陋且不方便的方法.试试这样,你可能会更开心:
>>> alist = [1, 2, 3]
>>> one, two, three = alist
>>> one
1
>>> two
2
>>> three
3
>>>
Run Code Online (Sandbox Code Playgroud)
因此,你的第二个例子可能是:
for key, value in names.items():
posX, posY, posZ = value
Run Code Online (Sandbox Code Playgroud)
正如FabienAndre在下面的评论中指出的那样,我也完全忘记了更方便的语法,for key,(posX,posY,posZ) in names.items():.
您没有指定从哪里获取这些值,但如果它们来自您可以控制的代码,并且您可以依赖于使用Python 2.6或更高版本,那么您也可以查看命名元组.然后,你可以提供一个名为元组的字典值,并且使用语法pos.x,pos.y等来访问值:
for name, pos in names.items():
doSomethingWith(pos.x)
doSomethingElseWith(pos.x, pos.y, pos.z)
Run Code Online (Sandbox Code Playgroud)