2017-07-17 113 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