딕셔너리로 구성된 리스트에서 특정 조건에 해당하는 딕셔너리를 제거해야 할 때는, 간단한 반복문과 del 키워드를 사용하면 손쉽게 처리할 수 있습니다.
예제
아래는 실제 동작 과정을 보여주는 예제입니다.
my_list = [{"id" : 1, "data" : "Python"},
{"id" : 2, "data" : "Code"},
{"id" : 3, "data" : "Learn"}]
print("The list is :")
print(my_list)
for index in range(len(my_list)):
if my_list[index]['id'] == 2:
del my_list[index]
break
print("The result is :")
print(my_list)실행 결과
The list is :
[{'id': 1, 'data': 'Python'}, {'id': 2, 'data': 'Code'}, {'id': 3, 'data': 'Learn'}]
The result is :
[{'id': 1, 'data': 'Python'}, {'id': 3, 'data': 'Learn'}]코드 설명
- 딕셔너리 요소들로 이루어진 리스트를 정의하고, 콘솔에 출력합니다.
- 리스트를 순회하면서 각 딕셔너리의
'id'키에 해당하는 값이 2와 같은지 검사합니다. - 조건과 일치하면
del키워드를 사용해 해당 요소를 삭제합니다. - 삭제 후에는
break문으로 반복문을 종료합니다. - 마지막으로 처리된 리스트를 다시 콘솔에 출력합니다.
참고: 리스트 컴프리헨션을 활용한 대안
여러 개의 항목을 한 번에 제거해야 하거나 새로운 리스트를 생성해도 되는 경우라면, 리스트 컴프리헨션(list comprehension)을 사용하는 방식도 좋은 선택입니다.
my_list = [{"id" : 1, "data" : "Python"},
{"id" : 2, "data" : "Code"},
{"id" : 3, "data" : "Learn"}]
result = [item for item in my_list if item['id'] != 2]
print(result)
# [{'id': 1, 'data': 'Python'}, {'id': 3, 'data': 'Learn'}]이 방법은 조건에 맞지 않는 항목만 남겨 새 리스트를 만들기 때문에, 원본 리스트를 유지하면서 필터링된 결과가 필요할 때 특히 유용합니다.