2017-03-31 102 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