字典初始化语法


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 这是否意味着dict中附加了新的项目{0xbeef: length}
  1. k是字典中的字段。所有字段的集合存储在最有可能是一个列表的device.keys()中,我们遍历列表,获取字段名称并将其初始化为零。
  2. 是的,你是对的。下一条语句负责添加一个新字段并将其初始化为数组的长度。

{k:0 for k in devices.keys()}创建一个字典,其中包含所有键和 0 表示所有值。并且您的评估是正确的,它会创建一个带有{value of 0xbeef : number of keys in the dictionary}的新密钥

在 Python 文档中,您可以看到列表推导

此模式很重要:

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 : 为每个 k 的值放置 0

印刷:

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

还有一件事:

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

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)

按列表长度填充。

最新更新