我要做的是将3个值从一个键转换成单独的变量。目前我是这样做的:
for key in names:
posX = names[key][0]
posY = names[key][1]
posZ = names[key][2]
这对我来说似乎不是很直观,即使它起作用。我也试过这样做:
for key, value in names:
location = value
不幸的是,这给了我一个单独的对象(这是我所期望的),但是我需要为键分配单独的值。感谢并为我对Python的新认识道歉。
更新 很抱歉没有明确说明我的价值观是从哪里来的。这是我第一个例子。
names = {}
for name in objectNames:
cmds.select(name)
location = cmds.xform(q=True, ws=True, t=True)
names[name] = location
如果不介意外部依赖项,可以包括Werkzeug's MultiDict:
为键存储多个值的另一种方法是使用容器类型,如
list
、set
或tuple
。这一点也不不奇怪。
在字典中存储给定键的“多个值”的唯一方法是将某种容器对象存储为值,例如列表或元组。您可以通过订阅列表或元组来访问它,就像您在第一个示例中所做的那样。
您的示例的唯一问题是,当以这种方式使用此类容器时,它是访问此类容器的丑陋且不方便的方式。像这样尝试,你可能会更快乐:
因此,您的第二个例子可以是:
正如fabiandre在下面的评论中指出的,还有一种更方便的语法我已经完全忘记了,
for key,(posX,posY,posZ) in names.items():
。您没有指定从何处获取这些值,但是如果它们来自您可以控制的代码,并且您可以依赖于使用Python2.6或更高版本,那么您还可以查看named tuples。然后,您可以提供一个命名元组作为dict值,并使用语法
pos.x
、pos.y
等来访问这些值:查看代码,使用位置/位置变量,还可以将X、Y和Z位置统一为一个公共类型,例如使用命名元组:
不过,只是个建议。
相关问题 更多 >
编程相关推荐