关于python:从dicts列表中获取“密钥”

Getting “keys” from list of dicts

本问题已经有最佳答案,请猛点这里访问。

我有以下数据:

1
2
3
[{'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']}]

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

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

但那感觉有点老土


这是什么下流的事?有点不雅。您只需执行以下操作:

1
2
3
4
5
6
7
8
9
>>> 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']

或者,如果您喜欢一个内衬:

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


第一种方式

字典上的迭代给了你它的键,所以一个简单的

1
>>> [key for key in dict]

给你一张钥匙清单,你就能得到你想要的东西

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

第二条道路

使用.key()(在代码中使用)但不需要使用list()(编辑:针对python2)下面是它的样子:

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

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


这很简单,并且做同样的事情:

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