【问题标题】:Python using braces inside list bracketsPython在列表括号内使用大括号
【发布时间】:2017-11-01 09:49:17
【问题描述】:

我对 Python 非常陌生,发现它与我在来自 PHP 领域之前遇到的任何东西都非常不同。

背景

我搜索过 SO 和 learned that the differences between:

x = [] and x{} 是括号将创建一个列表,花括号用于创建一个系列。但是我找不到的是对以下内容的解释

问题

为什么这段代码在带有括号的列表中使用大括号:

context.modules[(stock, length)] = 0

为什么列表中的大括号?

然后作为“额外帮助”,如果我可以将其设置为 0(尽管这可能超出了问题的范围)

完整代码:

context.modules = {}
    for stock in context.stock_list:
        for length in context.channels:
            context.modules[(stock, length)] = 0

【问题讨论】:

  • 圆括号包含一个元组类型。

标签: python


【解决方案1】:

如你所见,这是一本字典:

In [463]: dct = {'a' : 1}

In [464]: dct['a']
Out[464]: 1

它有一个键值条目。键是str 类型。 strs 被允许作为字典的键,因为它们可以被散列,因为它们是不可变的并且它们的对象产生一个唯一的、不变的散列值,字典使用该散列值来索引对象以便快速访问。

类似地,ints、floats、bools,基本上任何不可变的东西都可能是键。这包括tuples,但不包括lists、sets 和dicts 等结构。

现在,这是一个元组:

In [466]: x = (1, 2) 

x 可以用作字典中的键。

In [469]: d = {x : 5}

In [470]: d
Out[470]: {(1, 2): 5}

要访问与tuple 关联的值,您可以使用它进行索引:

In [471]: d[(1, 2)]
Out[471]: 5

这是您询问的语法背后的基本含义。有趣的是,括号是可选的:

In [472]: d[1, 2]
Out[472]: 5

这是因为括号不区分tuple,但逗号, 区分。

【讨论】:

  • 非常有趣。有很多东西要学。谢谢你。时间一到就接受
【解决方案2】:

您的 context.modules 不是列表,它是 python dictionary(大多数其他语言的映射)

所以,当你这样做时:

context.modules[(stock, length)] = 0

你基本上是在字典中创建一个 key, value 对,key 作为 tuple(stock, length) 和 value 作为 0

考虑

stock = 2length = 5

您的context.modules 完成上述任务后,将如下所示:

>>> context.modules
{(2, 5): 0}

【讨论】:

    猜你喜欢
    • 2017-06-01
    • 2018-12-28
    • 2017-04-02
    • 1970-01-01
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多