2017-03-08 68 views
3

创建一个字典,其中子列表的元素是关键广告值均为0迭代子列表到列表中创建我要遍历子表字典

例子:

keys = [['desk','lamp','printer'],['mouse','chair','desk','pencil']] 

我想输出:

output = [{'desk':0,'lamp':0,'printer':0},{'mouse':0,'chair':0,'desk':0,'pencil':0}] 

我尝试以下,但没有奏效:

d = {} 
output= [] 

for i in range(len(keys)): 
    for w in keys[i]: 
     output.append(d[w] = 0) 

但是当我运行这个我得到一个消息关键字不能是一个表达式。

由于我在密钥的子列表中有不同的元素,我该怎么做?

回答

6

您可以使用列表中理解和dict.fromkeys0为值:

>>> keys = [['desk','lamp','printer'],['mouse','chair','desk','pencil']] 
>>> [dict.fromkeys(l, 0) for l in keys] 
[{'desk': 0, 'lamp': 0, 'printer': 0}, {'mouse': 0, 'desk': 0, 'pencil': 0, 'chair': 0}] 

fromkeys第一个参数是密钥的迭代和第二个参数是为每个键设置的值。

1

试试这个:

keys = [['desk','lamp','printer'],['mouse','chair','desk','pencil']] 
output= [] 

for i in range(len(keys)): 
    d = {} 
    for w in keys[i]: 
     d[w] = 0 
    output.append(d) 
2

可以通过嵌套列表理解里面的字典理解:

>>> keys = [['desk','lamp','printer'],['mouse','chair','desk','pencil']] 
>>> [{k:0 for k in ks} for ks in keys] 
[{'printer': 0, 'desk': 0, 'lamp': 0}, {'desk': 0, 'pencil': 0, 'mouse': 0, 'chair': 0}] 
>>> 
1
abc = [['desk','lamp','printer'],['mouse','chair','desk','pencil']] 

new_array = [] 
for array in abc: 
    dic = {} 
    for value in array: 
     dic[value] = 0 
    new_array.append(dic) 

print(new_array) 

keys是蟒蛇特殊,避免使用它:d

+0

'keys'不是保留字,也不是内置函数的名称。 –

3

另一个简单的方法:

[{y:0 for y in x} for x in keys]