我是Python的新手(第1天)。我有一个数据集,通过布尔'poi'键指示某人是否是感兴趣的人。我能够使用以下内容过滤数据:
filtered = []
for n in enron_data:
if enron_data[n]['poi']: filtered.append(enron_data[n]);
print(len(filtered))
我尝试了一段时间来使用过滤器中内置的pythons但却无法使用。用内置过滤器做什么是干净的方法?
示例数据:{'METTS MARK': {... 'poi': False,}, ...}
答案 0 :(得分:5)
您可以使用列表推导来迭代字典,然后为True
评估value['poi']
的值创建一个新列表。
filtered = [v for k, v in enron_data.items() if v['poi']]
事实上,你根本就没有使用这些键,所以你可以这样做:
filtered = [v for v in enron_data.values() if v['poi']]
或者使用过滤器(类似于@AbidHasan):
filtered = filter(lambda x: x['poi'], enron_data.values())
答案 1 :(得分:1)
您也可以使用filter
功能。
new_list = filter(lambda x: a[x]['POI'], a)
答案 2 :(得分:0)
另一个filter
函数
new_list = filter(your_dict.get, your_dict)
比在lambda
函数中使用filter
便宜。
答案 3 :(得分:0)
d = {1:11, 2:22, 3:33}
# filter by value
d3 = {}
for key,value in d.items():
if value in [22,33]:
d3.update({key:value})
print(d3)