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

时间:2017-11-01 09:49:18

标签: python

我是Python的新手,发现它与来自PHP领域之前遇到的任何事情都截然不同。

背景

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

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

的探索

问题

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

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

为什么列表中的大括号?

然后作为“奖励帮助”,如果我可能为什么将其设置为0(尽管这可能超出了问题范围)

Fullcode:

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

2 个答案:

答案 0 :(得分:1)

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

所以,当你这样做时:

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

您基本上是在字典中创建键,值对,key(stock, length) 0,值为{{1} }。

考虑

stock = 2length = 5

在上述作业之后,

您的context.modules将如下所示:

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

答案 1 :(得分:1)

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

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

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

它有一个键值输入。密钥是str类型。 str被允许作为字典的键,因为它们可以是哈希,因为它们是不可变的,它们的对象产生一个唯一的,不变的哈希值,字典用它来快速索引对象访问。

同样,int s,float s,bool s,基本上任何不可变的都可能是一个关键。这包括 tuples ,但不包括list s,setdict等结构。

现在,这是一个元组:

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,但逗号,会划分。