【问题标题】:Query Python dictionary to get value from tuple查询 Python 字典以从元组中获取值
【发布时间】: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),这是不可调用的......

有什么建议吗?

【问题讨论】:

    标签: python dictionary tuples


    【解决方案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,因为您只查看值。

    【讨论】:

      猜你喜欢
      • 2012-03-07
      • 2018-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-09
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多