Query Python dictionary to get value from tuple

余生颓废 提交于 2019-11-30 04:19:49

问题


Let's say that I have a Python dictionary, but the values are a tuple:

E.g.

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

and I want to retrieve only the third value from the tuple, eg. ValZ1, ValZ2, or ValZ99 from the example above.

I could do so using .iteritems(), for instance as:

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

however, is there a more direct approach?

Ideally, I'd like to query the dictionary by key and return only the third value in the tuple...

e.g.

dict[Key1] = ValZ1 instead of what I currently get, which is dict[Key1] = (ValX1, ValY1, ValZ1) which is not callable...

Any advice?


回答1:


Just keep indexing:

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



回答2:


Use tuple unpacking:

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

Often people use

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

if they are only interested in one item of the tuple. But this may cause problem if you use the gettext module for multi language applications, as this model sets a global function called _.

As tuples are immutable, you are not able to set only one item like

d[key][0] = x

You have to unpack first:

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



回答3:


Using a generator expression!

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

You don't need to use iteritems because you're only looking at the values.



来源:https://stackoverflow.com/questions/7504081/query-python-dictionary-to-get-value-from-tuple

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!