如果键的值为true,则过滤字典

dev*_*r87 3 python dictionary

我是Python的新手(第一天)。我有一个数据集,该数据集通过布尔“ poi”键指示某人是否是感兴趣的人。我能够使用以下内容过滤数据:

filtered = []
for n in enron_data:
    if enron_data[n]['poi']: filtered.append(enron_data[n]);
print(len(filtered))
Run Code Online (Sandbox Code Playgroud)

我尝试了一段时间使用内置在过滤器中的python,但是无法使用。使用内置过滤器的一种干净方法是什么?

示例数据: {'METTS MARK': {... 'poi': False,}, ...}

Rob*_*man 5

您可以使用列表解析来遍历字典,然后创建评估值的新名单Truevalue['poi']

filtered = [v for k, v in enron_data.items() if v['poi']]
Run Code Online (Sandbox Code Playgroud)

实际上,您根本不使用键,因此您可以这样做:

filtered = [v for v in enron_data.values() if v['poi']]
Run Code Online (Sandbox Code Playgroud)

或使用过滤器(类似于@AbidHasan):

filtered = filter(lambda x: x['poi'], enron_data.values())
Run Code Online (Sandbox Code Playgroud)