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

15 投票
3 回答
52418 浏览
提问于 2025-04-17 02:47

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

比如:

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

我想从这个元组中只取出第三个值,比如上面例子中的ValZ1、ValZ2或者ValZ99。

我可以用.iteritems()来做到这一点,比如这样:

for key, val in dict.iteritems():
       ValZ = val[2]

不过,有没有更简单的方法呢?

理想情况下,我想通过键来查询字典,然后只返回元组中的第三个值...

比如:

dict[Key1] = ValZ1,而不是我现在得到的dict[Key1] = (ValX1, ValY1, ValZ1),这样就不太方便了...

有什么建议吗?

3 个回答

1

使用生成器表达式!

for val in (x[2] for x in dict):
    print val

你不需要用iteritems,因为你只是关注值而已。

6

使用元组解包:

for key, (valX, valY, valZ) in dict.iteritems():
       ...

很多人只对元组中的一个项目感兴趣时,会使用

for key, (_, _, valZ) in dict.iteritems():
       ...

但如果你在做多语言应用时使用 gettext 模块,这可能会引发问题,因为这个模块会设置一个全局函数叫 _

由于元组是不可变的,你不能像这样只设置一个项目:

d[key][0] = x

你必须先进行解包:

x, y, z = d[key]
d[key] = x, newy, z
16

继续进行索引:

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

撰写回答