2017-03-31 91 views
0

我一直在尝试转换我有的数据集有一些奇怪的困难。Python字典转换

我现在有从表单来的一个词典,如下所示:

data['content']['answers'] 

我想具有[“答案”]附加到一个列表中的第一个元素,象这样:

data['content'][0]['answers'] 

但是,当我尝试创建它时,我得到一个空数据集。

data['content'] = [data['content']['answers']] 

我不能为了我的生活弄清楚我做错了什么。

编辑:这里是开放JSON

我:

{ 
"content" : { 
       "answers" : { 
       "3" : { 

但我需要它是:

{ 
"content" : [ 
       { 
       "answers" : { 
        "3" : { 

感谢

+2

向我们展示一个可重复的例子 – kilojoules

+1

你有一个字典-的快译通,你说你想将其转换为一个字典-的-Dict-list-of-dict – smci

+0

是的,我已经添加了一些更多信息 – CareFree

回答

2

你可以做你想做的通过使用词典理解(这是其中之一。在Python中最优雅和强大的功能)

在你的情况,下面应该工作:

d = {k:[v] for k,v in d.items()} 

你在你的问题中提到的JSON。而不是滚动自己的解析器(这好像你可能试图做的),考虑使用json模块。

0

这将是最好的,如果你给我们“数据”(字典的样子),您尝试运行什么代码,是什么导致你和你的,除了一个具体的例子。我想我有一个想法,但不能确定。

+0

只是在上面添加了更多信息。 – CareFree

+0

这是一条评论,而不是一个答案。请不要发表评论作为答案。 –

0

你的问题不明确,一个明显的例子的缺乏。

顺便说一句,像这样可以为你工作?

data_list = list() 
for content in data.keys(): 
    data_list.append(data[content]) 
2

如果我理解正确的问题,这听起来像你需要data['contents']等于一个列表,其中每个元素是以前包含在data['contents']字典?

我相信这可能工作(在Python 2.7和3.6的作品):

# assuming that data['content'] is equal to {'answers': {'3':'stuff'}} 

data['content'] = [{key:contents} for key,contents in data['content'].items()] 

>>> [{'answers': {'3': 'stuff'}}] 

列表解析会保留为在contents原来每个字典词典内容,并返回字典作为一个列表。

的Python 2 DOC:https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions

的Python 3文档: https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions