查询Python字典以从元组中获取值

jsn*_*der 7 python dictionary tuples

假设我有一个Python字典,但值是一个元组:

例如

dict = {"Key1": (ValX1, ValY1, ValZ1), "Key2": (ValX2, ValY2, ValZ2),...,"Key99": (ValX99, ValY99, ValY99)}
Run Code Online (Sandbox Code Playgroud)

我想从元组中只检索第三个值,例如.上例中的ValZ1,ValZ2或ValZ99.

我可以使用.iteritems(),例如:

for key, val in dict.iteritems():
       ValZ = val[2]
Run Code Online (Sandbox Code Playgroud)

但是,有更直接的方法吗?

理想情况下,我想按键查询字典并仅返回元组中的第三个值...

例如

dict[Key1] = ValZ1而不是我目前得到的,dict[Key1] = (ValX1, ValY1, ValZ1)这是不可赎回的......

有什么建议?

Mar*_*nen 12

只需保持索引:

>>> D = {"Key1": (1,2,3), "Key2": (4,5,6)}
>>> D["Key2"][2]
6
Run Code Online (Sandbox Code Playgroud)


roc*_*ker 6

使用元组解包:

for key, (valX, valY, valZ) in dict.iteritems():
       ...
Run Code Online (Sandbox Code Playgroud)

人们经常使用

for key, (_, _, valZ) in dict.iteritems():
       ...
Run Code Online (Sandbox Code Playgroud)

如果他们只对元组中的一个项目感兴趣.但是,如果将gettext模块用于多语言应用程序,这可能会导致问题,因为此模型设置了一个名为的全局函数_.

由于元组是不可变的,因此您无法仅设置一个项目

d[key][0] = x
Run Code Online (Sandbox Code Playgroud)

你必须先打开包装:

x, y, z = d[key]
d[key] = x, newy, z
Run Code Online (Sandbox Code Playgroud)