python – 创建从一系列dicts中提取的项目数组?

我有这种格式的输出数据:

[{'state': 'OK', 'sname': 'sig1', 'extra': None}, {'state': 'OFF', 'sname': 'sig2', 'extra': None}, {'state': 'OK', 'sname': 'sig3', 'extra': None}, {'state': 'UNKNOWN', 'sname': 'sig4', 'extra': None}]

此数据可包含任意数量的条目.我想要做的是将所有sname值拉出到这样的列表中:

snames = ['sig1','sig2','sig3','sig4']

如何在不事先知道其长度的情况下迭代输出?

最佳答案 您可以使用列表推导来执行此操作:

In [1]: array_of_dicts = [{'state': 'OK', 'sname': 'sig1', 'extra': None}, {'state': 'OFF', 'sname': 'sig2', 'extra': None}, {'state': 'OK', 'sname': 'sig3', 'extra': None}, {'state': 'UNKNOWN', 'sname': 'sig4', 'extra': None}]

In [2]: snames = [d['sname'] for d in array_of_dicts]

In [3]: print snames
['sig1', 'sig2', 'sig3', 'sig4']
点赞