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)
有人可以帮我解释以下两行:
-
values = {k:0 for k in devices.keys()}
k:0
做什么? -
values[0xbeef] = len(values) # the number of devices
这是否意味着dict
中附加了新的项目{0xbeef: length}
?
k
是字典中的字段。所有字段的集合存储在最有可能是一个列表的device.keys()
中,我们遍历列表,获取字段名称并将其初始化为零。- 是的,你是对的。下一条语句负责添加一个新字段并将其初始化为数组的长度。
{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)
按列表长度填充。