Python在列表括号内使用大括号

Python using braces inside list brackets

我对Python非常陌生,发现它与我从PHP领域遇到的任何事情都非常不同。

背景:

我搜了搜,才知道:

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

问题

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

江户十一〔一〕号

为什么列表中的大括号?

然后作为一个"奖金帮助",如果我可以为什么设置它为0(尽管这可能是不可能的问题)

完整代码:

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


这是一本字典,正如你所理解的:

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

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

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

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

下面是一个元组:

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

x可用作字典中的键。

1
2
3
4
In [469]: d = {x : 5}

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

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

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

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

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

这是因为括号没有划分tuple,但逗号,划分了tuple


你的context.modules不是一个列表,它是一个python dictionary(大多数其他语言的map)

所以,当你这样做的时候:

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

您基本上是在字典中创建一个键、值对,其中key(stock, length)的元组,value是0的元组。

考虑到

stock = 2length = 5

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

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