2016-04-27 78 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