dave = [{'date':'12/10/12','time':'09:12','created_by':'adam','text':'this'},
{'date':'28/09/11','time':'15:58','created_by':'admin','text':'that'},
{'date':'03/01/10','time':'12:34','created_by':'admin','text':'this and that'}]
如何获取created_by
中找到的值列表。 (例如['adam','admin']
)
答案 0 :(得分:5)
列表理解将很好地运作:
[ x['created_by'] for x in dave if 'created_by' in x ]
如果您完全确定'created_by'
是dave
中包含的每个字典中的关键字,那么您可以放弃if 'created_by' in x
部分 - 它会引发KeyError
如果在那种情况下缺少那个密钥。
当然,如果您想要唯一值,那么您需要确定订单是否重要。如果订单不重要,可以使用set
:
set(x['created_by'] for x in dave if 'created_by' in x)
如果订单很重要,请参阅this classic question
答案 1 :(得分:1)
您可以使用set
工厂仅返回唯一值,然后您可以通过list
使用list
工厂取回set
: -
>>> set(x['created_by'] for x in dave)
set(['admin', 'adam'])
>>> list(set(x['created_by'] for x in dave))
['admin', 'adam']
答案 2 :(得分:1)
将它放入一个集合中,然后返回列表......
list(set(d['created_by'] for d in dave))
答案 3 :(得分:0)
列表推导的进步是对可能没有'created_by'的项使用if条件。使用凌乱的数据时,通常需要这样做。
list(set(x['created_by'] for x in dave if 'created_by' in x))
>>> ['admin', 'adam']