查询 Python 字典以从元组中获取值
Posted
技术标签:
【中文标题】查询 Python 字典以从元组中获取值【英文标题】:Query Python dictionary to get value from tuple 【发布时间】:2011-11-22 04:13:41 【问题描述】:假设我有一个 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)
,这是不可调用的......
有什么建议吗?
【问题讨论】:
【参考方案1】:使用元组解包:
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
【讨论】:
非常有帮助,谢谢!那里有几个不同的选择。干杯!【参考方案2】:保持索引:
>>> D = "Key1": (1,2,3), "Key2": (4,5,6)
>>> D["Key2"][2]
6
【讨论】:
太棒了。正是我想要的!谢谢。 不客气。也不要忘记接受问题的答案(左侧的复选框)。【参考方案3】:使用生成器表达式!
for val in (x[2] for x in dict):
print val
您不需要使用 iteritems,因为您只查看值。
【讨论】:
以上是关于查询 Python 字典以从元组中获取值的主要内容,如果未能解决你的问题,请参考以下文章