字典初始化语法

时间:2017-11-15 20:19:01

标签: python dictionary initialization

def __init__(self, devices, queue):
    '''
    '''
    self.devices = devices
    self.queue = queue

    values = {k:0 for k in devices.keys()}
    values[0xbeef] = len(values) # the number of devices
    super(CallbackDataBlock, self).__init__(values)

有人可以帮我解释以下两行:

  1. values = {k:0 for k in devices.keys()}
    k:0做了什么?
  2. values[0xbeef] = len(values) # the number of devices
    这是否意味着新项{0xbeef: length}会附加在dict

3 个答案:

答案 0 :(得分:1)

  1. k是字典中的字段。所有字段的集合都存储在device.keys()中,这很可能是一个列表,我们遍历列表,获取字段名称并将其初始化为零。
  2. 是的,你是对的。下一个语句负责添加一个新字段并将其初始化为数组的长度。

答案 1 :(得分:0)

{k:0 for k in devices.keys()}创建一个包含所有键的字典,并为所有值创建0。您的评估是正确的,它会使用{value of 0xbeef : number of keys in the dictionary}

创建一个新密钥

答案 2 :(得分:0)

在python文档中,您可以看到List Comprehensions

这种模式很重要:

expression  for  item  in  list  if  conditional else

或简单用法:

expression  for  item  in  list 
我们可以使用列表数据类型中的

list = [0,1,2,3,4,5]
a = [x for x in list]
print (a)

打印:

[1,2,3,4,5]

我们有:

a = [x*2 for x in list]
print (a)

打印:

[2,4,6,8,10]

和字典

在词典中

我们有这样的语法:

{key1:value1, key2:value2, . . .}

和示例:

list = [0,1,2,3,4,5]
d = [k:0 for k in list]
print (d)
示例k:0 maens中的

:将0设为每个k的值

打印:

{1: 0, 2: 0, 3: 0, 4: 0, 5: 0}

还有一件事:

python字典必须使用有用的方法:dict.keys()dict.values()
当我们使用dict.keys时,python返回一个dict键的列表

d = {"name":"sam", "job":"programer", "salary":"25000"}
print(d.keys())
print(d.values())

打印:

['name','job','salary']
['sam','programer','25000']

用于在我们使用的字典中添加新对象:

d[newkey]= newValue

例如:

d[10] = 'mary'
print(d[10])

打印:

'mary'

现在你的回答:

代码

1)k:0 maens:将0作为每个k的值 2)0xbeef是hex代码== 48879十进制

    values[48879] = len(values)

按名单长度填写。