2017-06-01 44 views
0

所以我要創建列表的嵌套字典,其中內在價值是一個列表,可重複:創建一個嵌套的字典,其中的內在價值是列表

d = {'45678':{'ant':['N4', 'N4', 'P3', 'P3']}} 

這是我有這麼遠,但可以」牛逼弄清楚如何列表追加到內在價值:

d={} 
with open(file_path, 'r') as f: 
    for l in f.readlines()[4:]: 
     peaks = l.split() 
     if '1' in peaks[5]: 
      d.setdefault(peaks[0], {})['ant'] = [peaks[7]] 

將返回:

{'20065037': {'ant': ['N4']}} 

我的問題是我如何追加一個列表作爲嵌套字典中的內部值?

+1

使用'list.append()'方法。 'd.setdefault(peaks [0],{})['ant']。append(peaks [7])' – Kasramvd

+1

輸入文件是什麼樣的?我不確定其他值應該來自哪裏。在Python中追加列表與'l.append(whatever)'一樣簡單。 – smarx

+0

'd.setdefault(peaks [0],{})['ant'] = [peaks [7]]'中的'peaks [7]'的括號不會成爲列表嗎? – e9e9s

回答

1

假設你的代碼基本上是健全的(就處理文件而言),你應該在內部字典上使用setdefault,在列表中使用append

d={} 
with open(file_path, 'r') as f: 
    for l in f.readlines()[4:]: 
     peaks = l.split() 
     if '1' in peaks[5]: 
      d.setdefault(peaks[0], {}).setdefault('ant', []).append(peaks[7]) 

目前,您始終使用[peaks[7]]創建新列表,而不是提供附加選項。

+0

是的,這就是它。我無法確定如何在內部字典上設置setdefault。將在6分鐘內upvote :) – e9e9s

2

我想我可能已經想出了你想要做的事情。

這有幫助嗎?

d.setdefault(peaks[0], {}).setdefault('ant', []).append(peaks[7]) 

如果不是,請解釋文件的外觀或其他與您正在嘗試做什麼有關的內容。

+0

沒有upvoting你會意味着我的答案也有問題:) –

+0

你認爲第二upvote來自哪裏;) – e9e9s

相關問題