2016-10-31 78 views
0

我对Python很新,所以只是通过理解数据集的方式工作。Python对象和字典中的列表

我在使用API​​所需的JSON输出方面遇到了一些麻烦。

我使用

import json 
json.load(data_file) 

使用Python解释工作,然后做

json.dump(dict, json_data) 

我的数据需要像下面,当它被输出。

{ 
    "event":{ 
    "id":10006, 
    "event_name":"My Event Name", 
    }, 
    "sub event":[ 

    ], 
    "attendees":[ 
    { 
     "id":11201, 
     "first_name":"Jeff", 
     "last_name":"Smith", 
    }, 
    { 
     "id":10002, 
     "first_name":"Victoria", 
     "last_name":"Baker", 
    }, 
    ] 
} 

我已经能够在Python中创建阵列和转储到JSON,但我有困难创造了字典中的事件“对象”。我使用下面:

attendees = ['attendees'] 
attendeesdict = {} 
attendeesdict['first_name'] = "Jeff" 
attendees.append(attendeesdict.copy()) 

任何人都可以帮助我正确添加“事件”对象?

+0

你对于Event对象/ dcit有困难,但你的问题似乎是关于* Attendees * dict。请澄清。如果在循环内完成,您可能无法在这里使用'.copy'方法,但是您需要展示更多的代码,以便我们能够理解您实际尝试实现的内容以及如何执行它。 –

+1

你到目前为止的代码是毫无意义的。没有必要将字符串''attendees''作为与会者列表中的第一个元素。 –

+0

很难理解你所要求的。你有什么“data_file”?请发布其内容。你的事件似乎是一个非常简单的字典,所以什么阻止你做一个简单的'json_data [“event”] = {“id”:10006,“event_name”:“我的事件名称”}'?你会注意到,Python字典/列表和JSON非常相似。 – Guillaume

回答

1

一般来说,从JSON到去字典几乎没有工作,因为两者非常相似,如果不相同:

attendees = [ 
    { 
     "first_name": "Jeff" 
     # Add other fields which you need here 
    }, 
    { 
     "first_name": "Victoria" 
    }  
] 

在这种情况下,attendees是词典的列表。对于event

event = { 
    "id": 10006, 
    "event_name": "My Event Name" 
} 

全部放在一起:

data = { 
    "event": event, 
    "sub event": [], 
    "attendees": attendees 
} 

现在,你可以将其转换为一个JSON对象,准备发送给您的API:

json_object = json.dumps(data) 
+0

非常感谢!这对我来说是完美的解释,我通过迭代所有列表来让事情变得如此复杂,当你看到它时,python使它变得如此简单! – CareFree

1

如果你只是想静态创建一个嵌套的字典,你可以使用一个单一的文字。如果你将上面的JSON粘贴到Python代码中,你会得到一个有效的字典。

1

假设你已经在其他地方建的所有值,现在你只是把它们放在一起:

result = {'event':event_dict, 'sub event':subevent_list, 'attendees':attendees_list} 
0

构造您dicts,并添加像下面

{ 
     "event":"add your dict" 
     "sub event":["add your dict"], 
     "attendees":["add your dict"] 
    }