2017-10-18 80 views
0

我想創建JSON文件。使用json.dumps和成功打印。 我有一個問題。python:附加到數據使用json.dumps

我想要的格式是

channel_info = OrderedDict() 
table = OrderedDict() 
table2 = OrderedDict() 

channel_info["KIND1"] = pkind[2].text 
table[ptime[10].text] = pnk[11].text 
table[ptime[11].text] = pnk[12].text 
channel_info["TABLE1"] = table 

channel_info["KIND2"] = pkind[2].text 
table2[ptime[10].text] = pnk[11].text 
table2[ptime[11].text] = pnk[12].text 
channel_info["TABLE2"] = table2 

結果:

{ 
"KIND1": "xxxx", 
"TABLE1": { 
    "09:10": "aaaa", 
    "10:10": "bbbb" 
}, 
"KIND2": "yyyy", 
"TABLE2": { 
    "09:10": "cccc", 
    "10:10": "dddd" 
} 

}

如何使用輸出while循環相同的格式? JSON對象的名稱? KIND1,TABLE1,KIND2,TABLE2等...... 我想知道如何使用while循環動態地更改這些名稱。 謝謝。

+0

請說清楚你在問題中的期望? –

+0

起初我會預期指數會改變。用你的代碼'KIND1'和'KIND2'應該是一樣的。 –

+0

所以基本上,你想增加TABLE1,TABLE2,TABLE3等的表名(對於KIND也是一樣),對吧? –

回答

0

你可以做這樣的事情(假設table字典是在每個循環靜態的,因爲它似乎在你給的例子):

channel_info = dict() 
# n_tables is the number of iterations you need 
for i in range(n_tables): 
    table = dict() 
    channel_info["KIND%s" % (i+1)] = pkind[1].text 
    table[ptime[10].text] = pnk[11].text 
    table[ptime[11].text] = pnk[12].text 
    channel_info["TABLE%s" % (i+1)] = table 

,因爲你給它分配你不需要動態表名到字典鍵。

+0

謝謝!我解決了它 – mark3

0

基本上,如果我理解正確你的問題:

... 
i=0 
no_of_tables = 4 
while i<=no_of_tables: 
    table_counter = i+1 
    table_counter = str(table_counter) 
    kind = 'KIND' + table_counter 
    table = 'TABLE' + table_counter 
    channel_info[kind] = pkind[2].text 
    table[ptime[10].text] = pnk[11].text 
    table[ptime[11].text] = pnk[12].text 
    channel_info[table] = table 

注:我知道這是可以優化的,但是爲了簡單起見,我把它原樣。

+0

謝謝!我解決了它。 – mark3

+0

但它有一個問題。 [TypeError:'str'對象不支持項目分配]。我不知道爲什麼這個錯誤。無論如何,感謝您幫助我們排除故障 – mark3