Python中字典中键的多个值

Joh*_*ann 7 python dictionary

我想要做的是从一个键获得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)

  • 我还会在names.items()中提到`for key,(posX,posY,posZ):` (2认同)