Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python – 딕셔너리 리스트에서 특정 값을 가진 항목 제거하는 방법

딕셔너리로 구성된 리스트에서 특정 조건에 해당하는 딕셔너리를 제거해야 할 때는, 간단한 반복문과 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'}]

이 방법은 조건에 맞지 않는 항목만 남겨 새 리스트를 만들기 때문에, 원본 리스트를 유지하면서 필터링된 결과가 필요할 때 특히 유용합니다.