Dictionary={'list': [{'id': 1, 'task': 'Harry', 'completed': False}, {'id': 2, 'task': 'Simon', 'completed': True}]}
我想用completed = True
过滤这个字典中的所有项目,并将其添加到另一个列表中
如果基础字典的唯一键是list
,那么只需迭代其内容并将其附加到列表中
completed = []
for d in dictionary["list"]:
if d["completed"]:
completed.append(d)
或者作为列表理解:
completed = [d for d in dictionary["list"] if d["completed"]]
如果字典中只有一个键,则可以通过单行表达式实现:
d = {'list': [{'id': 1, 'task': 'Harry', 'completed': False}, {'id': 2, 'task': 'Simon', 'completed': True}]}
li = [i for i in d['list'] if i['completed']]
print(li)
>> [{'id': 2, 'task': 'Simon', 'completed': True}]
现在,考虑到字典中有多个关键字,那么:
d = {
'list1': [{'id': 1, 'task': 'Harry', 'completed': False}, {'id': 2, 'task': 'Simon', 'completed': True}],
'list2': [{'id': 1, 'task': 'Harry', 'completed': False}, {'id': 2, 'task': 'Simon', 'completed': True}],
}
all_items = []
new_filter_d = dict() # get sub list based on each different key
for k, v in d.items():
all_items += [i for i in v if i['completed']]
new_filter_d[k] = [i for i in v if i['completed']]
print(all_items)
>> [{'id': 2, 'task': 'Simon', 'completed': True},
{'id': 2, 'task': 'Simon', 'completed': True}]
print(new_filter_d)
>> {'list1': [{'id': 2, 'task': 'Simon', 'completed': True}],
'list2': [{'id': 2, 'task': 'Simon', 'completed': True}]}
这可能会帮助您
list_items = {'list': [{'id': 1, 'task': 'Harry', 'completed': False},
{'id': 2, 'task': 'Simon', 'completed': True}],
'list_2': [{'id': 1, 'task': 'helena', 'completed': False},
{'id': 2, 'task': 'carlos', 'completed': True}]}
new_list = []
for list_name in list_items:
for list_of_dict in list_items[list_name]:
if list_of_dict["completed"] == True:
new_list.append(list_of_dict)
[{'id': 2, 'task': 'Simon', 'completed': True},
{'id': 2, 'task': 'carlos', 'completed': True}]