从字典列表中获取“键”

时间:2018-12-27 20:14:18

标签: python

我有以下数据:

[{'id': ['132605', '132750', '132772', '132773', '133065', '133150', '133185', '133188', '133271', '133298']}, 
 {'number': ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']}, 
 {'id': ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1']}]

获取键列表的最佳方法是什么(好像它是字典而不是数组)?目前我正在做:

>>> [list(i.keys())[0] for i in e.original_column_data]
['id', 'number', 'id']

但是感觉有点黑

3 个答案:

答案 0 :(得分:5)

这有什么不好的地方?这有点不雅致。您只需要执行以下操作:

>>> keys = []
>>> data = [{'id': ['132605', '132750', '132772', '132773', '133065', '133150', '133185', '133188', '133271', '133298']},
...  {'number': ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']},
...  {'id': ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1']}]
>>> for d in data:
...     keys.extend(d)
...
>>> keys
['id', 'number', 'id']

或者如果您喜欢单线:

>>> [k for d in data for k in d]
['id', 'number', 'id']

答案 1 :(得分:2)

这更简单,并且执行相同的操作:

[k for d in e.original_column_data for k in d]
=> ['id', 'number', 'id']

答案 2 :(得分:2)

第一种方式

字典上的迭代为您提供了它的键,因此很简单

>>> [key for key in dict]

给出一个键列表,您可以使用

>>> [key for dict in dict_list for key in dict]

第二种方式

使用.key()(在您的代码中使用) 但无需使用list()(编辑:适用于python 2)
它将是这样的:

>>> [dict.keys()[0] for dict in dict_list]

在您的代码中,字典只有一个键,因此这两个键具有相同的结果。
但是我更喜欢第一个,因为它提供了所有词典的所有键