如何在python的列表中列出字典中找到的certian值的出现情况?

如何在python的列表中列出字典中找到的certian值的出现情况?,python,Python,如何获取在created_by中找到的值的列表。e、 g 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','

如何获取在created_by中找到的值的列表。e、 g

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'}]
如果您完全确定dave中包含的每个dict中的“created_by”都是一个键,那么您可以在x部分中去掉If“created_by”-如果该键在这种情况下丢失,则会引发一个keyrerror

当然,如果您想要唯一的值,那么您需要确定顺序是否重要。如果顺序不重要,那么一套就可以了:

[ x['created_by'] for x in dave if 'created_by' in x ]
如果顺序很重要,请参阅

您可以使用集合工厂仅返回唯一值,然后您可以使用集合上的列表工厂返回列表:-


把它放在一个集合中,然后回到一个列表

>>> set(x['created_by'] for x in dave)
set(['admin', 'adam'])

>>> list(set(x['created_by'] for x in dave))
['admin', 'adam']

列表理解的一个进步是对可能没有“created_by”的项使用if条件。在处理凌乱的数据时,通常需要这样做

list(set(d['created_by'] for d in dave))
list(set(d['created_by'] for d in dave))
list(set(x['created_by'] for x in dave if 'created_by' in x))
>>> ['admin', 'adam']