繁体   English   中英

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

[英]How do I list occurrences of certian values found in a dictionary in a list in python?

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']

列表理解将很好地工作:

[ x['created_by'] for x in dave if 'created_by' in x ]

如果您绝对确定dave包含的每个字典中的键都是'created_by'则可以忽略if 'created_by' in x部分中的KeyError如果在这种情况下缺少该键,则会引发KeyError

当然,如果您想要唯一的值,则需要确定顺序是否重要。 如果顺序不重要,则可以选择set

set(x['created_by'] for x in dave if 'created_by' in x)

如果顺序很重要,请参考此经典问题

您可以使用set factory仅返回唯一值,然后可以使用set list factory来获取list :-

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

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

将其放在集合中,然后返回列表...

list(set(d['created_by'] for d in dave))

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM