我是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
答案 0 :(得分:1)
你的context.modules
不是一个列表,它是一个python dictionary
(大多数其他语言的地图)
所以,当你这样做时:
context.modules[(stock, length)] = 0
您基本上是在字典中创建键,值对,key
为(stock, length)
0
,值为{{1} }。
考虑
stock = 2
和length = 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,set
和dict
等结构。
现在,这是一个元组:
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
,但逗号,
会划分。