2017-03-08 67 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]