【问题标题】:How do I access items of a dictionary using items from a tuple?如何使用元组中的项目访问字典的项目?
【发布时间】:2019-11-16 12:10:19
【问题描述】:

如果我有一个元组:

cyc = (('a-b', 'b-a'), ('a-c', 'c-a'), ('b-c', 'c-b'))

还有一本字典:

data = {'a-b': {'x': 1, 'y': 2},
        'b-a': {'x': 3, 'y': 4},
        'a-c': {'x': 5, 'y': 6},
        'c-a': {'x': 7, 'y': 8},
        'b-c': {'x': 9, 'y': 10},
        'c-b': {'x': 11, 'y': 12}}

如何使用元组的元素访问字典的元素?

例如,如果我只想打印一个元素:

print(data[cyc[1[0['x']]]])

我教过这会返回 5。

相反,这给了我错误消息:

''TypeError: 'int' 对象不可下标''

【问题讨论】:

  • 翻转几个括号。逐步找出索引。

标签: python python-3.x dictionary tuples typeerror


【解决方案1】:

当您访问嵌套项目时,您不会嵌套索引,而是附加它们。

cyc[1] == ('a-c', 'c-a')

意思是

cyc[1][0] == 'a-c'

要将其用作字典中的索引,请编写

data[cyc[1][0]]

然后要从该嵌套字典中获取x 索引,请附加['x']

data[cyc[1][0]]['x']

当你写像0['x'] 这样的东西时,它意味着索引0 值,这没有任何意义。

【讨论】:

    【解决方案2】:

    [] 中放置正在访问的密钥。如果您想从该返回值中获得一个项目,您可以在该返回值之后添加另一个 []

    print(data[cyc[1][0]]['x'])
    

    从字典data 获取键cyc[1][0] 处的值,即cyc 中元素1 中的元素0。从该值(另一个字典)中获取键 'x' 处的值

    【讨论】:

      【解决方案3】:

      这是您希望通过的子表达式序列:

      >>> cyc[1]
      ('a-c', 'c-a')
      >>> cyc[1][0]
      'a-c'
      >>> data[cyc[1][0]]
      {'x': 5, 'y': 5}
      >>> data[cyc[1][0]]['x']
      5
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多