【问题标题】:Why arguments to dictionary[] are interpreted as a single key? [duplicate]为什么字典 [] 的参数被解释为单个键? [复制]
【发布时间】:2017-01-17 10:49:16
【问题描述】:

如果我声明这样的字典:

a = {(1, 2, 3): 10, (4, 5, 6):20}

我可以使用键来引用元素:

a[(1, 2, 3)]

为什么会这样:

a[1, 2, 3]

导致相同的操作?如果 is 是一个函数,它应该会引发错误,因为我传递了三个参数而不是一个。

【问题讨论】:

  • 您不是将 args 传递给 dict,而是通过一个键对其进行索引,这与将 args 传递给您正在调用的函数是完全不同的过程。

标签: python


【解决方案1】:
a[1, 2, 3]

它需要一个元组。

>>>a = 1,2,3
>>>type(a)
tuple

【讨论】:

    【解决方案2】:

    1, 2, 3 是一个元组,就像(1, 2, 3)。元组由逗号定义。括号用于对可能不明确的情况进行分组。

    【讨论】:

    • 为什么这与函数不同? def f(a): pass; f(1, 2, 3)
    • @RuggeroTurra,“括号用于在可能不明确的情况下进行分组”。
    • 我不认为这是答案。在函数调用的情况下,, 似乎将参数分开,而在使用 [ ] 时,它似乎定义了一个元组。那么:[ ] 是一个仅具有特殊语法的函数吗?
    【解决方案3】:

    您仍然在传递一个元组,只是使用其他语法。

    (a, b, c, d)a, b, c, d 一样,都是构造一个元组。

    【讨论】:

      【解决方案4】:

      因为声明 x,y,z 是声明元组的隐式方式。试试这个:

       >>> n = 1,2
       >>> n
       (1, 2)
      

      【讨论】:

      • 更隐含的是,它是声明元组的方式。括号在这里什么都不做。因此(1, 2)1, 2 相同,(1)1 相同。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      • 2010-12-20
      • 1970-01-01
      • 2015-11-07
      相关资源
      最近更新 更多