2017-07-17 151 views
0

我具有低於詞典的列表的第一索引,轉換Python字典到列表中的dict鍵在列表

[ 
    { 
     "animal": "lion", 
     "color": "yellow" 
    }, 
    { 
     "animal": "elephant", 
     "color": "black" 
    } 
] 

我需要如以下格式列表的列表的輸出,

[ 
    ["animal","color"], 
    ["lion","yellow"], 
    ["elephant","black"] 
] 
+0

我可以知道我爲什麼會倒下嗎? – rajagopalx

+1

爲了什麼目的?已經有處理特定情況的模塊。 –

+2

@RajagopalSubramanian歡迎來到Stack Overflow!看起來你希望我們爲你寫一些代碼。儘管許多用戶願意爲遇險的編碼人員編寫代碼,但他們通常只在海報已嘗試自行解決問題時才提供幫助。證明這一努力的一個好方法是包含迄今爲止編寫的代碼,示例輸入(如果有的話),期望的輸出以及實際獲得的輸出(控制檯輸出,回溯等)。您提供的細節越多,您可能會收到的答案就越多。檢查[FAQ]和[問]。 – vaultah

回答

3

首先,從列表中的第一個字典中提取密鑰。然後,通過將這些鍵應用於每個字典來構造列表。

keys = sorted(list_of_dicts[0].keys()) 
table = [keys] + [[d[k] for k in keys] for d in list_of_dicts] 
# [['animal', 'color'], ['lion', 'yellow'], ['elephant', 'black']] 
+0

謝謝。我試過沒有排序()它會返回'[dict_keys(['animal','color']),['lion','yellow']]''。我可以知道爲什麼嗎? – rajagopalx

+1

@RajagopalSubramanian在Python 3.X中,'dict.keys'將返回一個'dict_keys'對象。如果你不關心密鑰的順序,你可以明確地將它轉換爲「list」。 –

1

你可以試試這個:

import itertools 
l = [ 
{ 
    "animal": "lion", 
    "color": "yellow" 
}, 
{ 
    "animal": "elephant", 
    "color": "black" 
} 
] 

headers = list(set(itertools.chain.from_iterable([i.keys() for i in l]))) 

headers.extend([i.values() for i in l]) 
print(headers) 

輸出:

[['animal', 'color'], ['lion', 'yellow'], ['elephant', 'black']] 
+0

如何爲n個元素做到這一點?無論如何謝謝:) – rajagopalx

+0

@RajagopalSubramanian你能詳細說明嗎?你的意思是有多少頭? – Ajax1234

+0

是的。同樣在'first = header [1] [0]'我得到了'TypeError:'dict_items'對象不支持索引' – rajagopalx