2016-04-27 79 views
1

我有問題,追加字典,這種狀況的時候,關鍵 字典一樣的,這是代碼的Python:如何附加型字典,相同的密鑰

import random 
temp_data = {} 

def data_value(): 
    data = [] 
    for x in range (1,6): 
     val = random.randrange(0, 101, 2) 
     data.append(val) 
    return data 

for x in range(1,11): 
    if x == 3: 
     temp_data.update({ "name" : "Cat" , "total" : data_value() }) 
    if x == 4: 
     temp_data.update({ "name" : "Dog" , "total" : data_value()}) 
    if x == 5: 
     temp_data.update({ "name" : "Chicken" , "total" : data_value()})   
print temp_data 

輸出中會

{'total': [20, 84, 10, 14, 10], 'name': 'Chicken'} 

我想讓輸出像

{'total': [20, 84, 10, 14, 10], 'name': 'Cat'}, 
{'total': [20, 84, 10, 14, 10], 'name': 'Dog'}, 
{'total': [20, 84, 10, 14, 10], 'name': 'Chicken'} 

下襬,我試着追加,但它不能,因爲數據必須是數組列表。 謝謝。

回答

0

我認爲你必須把字典放入數組列表中,並附加它。

import random 
temp_data = {} 
temp_list = [] 
def data_value(): 
    data = [] 
    for x in range (1,6): 
     val = random.randrange(0, 101, 2) 
     data.append(val) 
    return data 

for x in range(1,11): 
    if x == 3: 
     temp_data = { "name" : "Cat" , "total" : data_value()} 
     temp_list.append(temp_data) 
    if x == 4: 
     temp_data = { "name" : "Dog" , "total" : data_value()} 
     temp_list.append(temp_data)  
    if x == 5: 
     temp_data = { "name" : "Chicken" , "total" : data_value()} 
     temp_list.append(temp_data) 
print temp_list 

輸出將是:

[ 
{'total': [88, 26, 8, 28, 54], 'name': 'Cat'}, 
{'total': [16, 68, 94, 20, 16], 'name': 'Dog'}, 
{'total': [88, 92, 56, 62, 46], 'name': 'Chicken'} 
] 

^^ CMIIW但輸出仍是數組列表

有的我有一些技巧轉換數組列表轉換爲字符串並更換標籤[{和}] 這樣

result_data = str(temp_list) 
temp_rest = result_data.replace("[{", "{") 
temp_rest = temp_rest.replace("}]", "}") 
print temp_rest 

最終輸出這樣

{'total': [88, 26, 8, 28, 54], 'name': 'Cat'}, 
{'total': [16, 68, 94, 20, 16], 'name': 'Dog'}, 
{'total': [88, 92, 56, 62, 46], 'name': 'Chicken'} 
0

你需要使用一個列表:

temp_data = [] # Its a list now 
for x in range(1,11): 
    if x == 3: 
     temp_data.append({ "name" : "Cat" , "total" : data_value() }) # Use list.append() 
    if x == 4: 
     temp_data.append({ "name" : "Dog" , "total" : data_value()}) 
    if x == 5: 
     temp_data.append({ "name" : "Chicken" , "total" : data_value()})   
print temp_data