본문 바로가기
  • ▒ 네모의 쉽게 배우는 네트워크 | 개발 ▒
파이썬 개발/개발 기초

리스트에서 중복된 요소들의 인덱스값 추출하기

by 너l모 2022. 4. 6.
반응형

※ 업무하면서 습득한 내용들을 정리해 놓은 포스팅입니다 :P 추가로 궁금하신 점은 댓글로 남겨주시고 필요한 자료 있으면 요청주세요! 잘못된 내용이 있으면 고쳐주시면 감사하겠습니다. 자료 퍼가실 때는 출처 남겨주세요!


 ο 목차

     


    ※ 코드 보는 방법 참고

    ㅇ 달러 기호($)가 있는 경우 -> 리눅스 터미널에서 CLI 명령어 입력

    ㅇ "=#" 기호가 있는 경우 -> psql 쉘에서 명령어 입력

    ㅇ 꺽쇠가 하나 있는 경우(>) -> 윈도우 명령 프롬프트(cmd)에서 명령어 입력

    ㅇ 꺽쇠가 세개 있는 경우(>>>) -> python 쉘에서 명령어 입력


    안녕하세요, 네모입니다. 

     

    오늘은 하나의 리스트에서 중복되는 요소들이 여러개 있을 때 모든 요소의 인덱스 값을 한번에 받을 수 있는 코드를 공유하려고 합니다.

     

    1. 코드 개요

    1) 코드 내용

    - 하나의 리스트에서 중복되는 여러 요소들의 인덱스 값을 출력하는 함수

    def getIndexPositions(listOfElements, element):
    	indexPosList = []
    	indexPos = 0
    	while True:
    		try:
    			# Search for item in list from indexPos to the end of list
    			indexPos = listOfElements.index(element, indexPos)
    			# Add the index position in list
    			indexPosList.append(indexPos)
    			indexPos += 1
    		except ValueError as e:
    			break
    	return indexPosList

     

    2) 코드 설명

    - getIndexPosition 함수는 listOfElements(리스트)와 element(요소) 값을 인자로 받음

    - listOfElements(리스트)에 있는 모든 element(요소) 값의 인덱스를 검색해서 indexPosList(리스트)로 저장

    - indexPosList*(리스트) 반환

    * 모든 element(요소) 값의 인덱스를 적어놓은 리스트

     

    2. 사용 방법

    #index_test.py
    
    # 함수 정의
    def getIndexPositions(listOfElements, element):
    	indexPosList = []
    	indexPos = 0
    	while True:
    		try:
    			# Search for item in list from indexPos to the end of list
    			indexPos = listOfElements.index(element, indexPos)
    			# Add the index position in list
    			indexPosList.append(indexPos)
    			indexPos += 1
    		except ValueError as e:
    			break
    	return indexPosList
    
    # 인자가 될 리스트 
    test_list = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test', 'Ok']
    
    # 함수 적용
    indexPosList = getIndexPositions(test_list, 'Ok')
    
    # 결과 확인
    print(indexPosList)

     

     

    3. 실사용 예시

    1) 개요 

     - zabbix의 history.get API 사용 결과값에서 value 값만 추출하기

    2) 사용 방법 코드 예시

    # value 값만 추출하기 코드 
    
    # 모듈 import
    import re
    
    # 함수 정의
    def getIndexPositions(listOfElements, element):
    	indexPosList = []
    	indexPos = 0
    	while True:
    		try:
    			# Search for item in list from indexPos to the end of list
    			indexPos = listOfElements.index(element, indexPos)
    			# Add the index position in list
    			indexPosList.append(indexPos)
    			indexPos += 1
    		except ValueError as e:
    			break
    	return indexPosList
    
    # 추출할 리스트
    x = '{"jsonrpc": "2.0","result": [{"itemid": "23296","clock": "1351090996","value": "0.085",\"ns": "563157632"{"itemid": "23296","clock": "1351090936","value":"0.16","ns": "549216402"},{"itemid": "23296","clock": "1351090876","value": "0.18","ns": "537418114"},{"itemid": "23296","clock": "1351090816","value": "0.21","ns": "522659528"}}],"id": 1}'
    
    # 파싱
    y= re.split('[\|{\|"\|:\|}\|]|\,\| ',x)
    
    # 인덱스값 추출
    indexlist = getIndexPositions(y,'value')
    
    value_list = []
    
    # value 값 추출
    for i in indexlist :
    	value_list.append(y[i+3])
    	
    # 결과 확인
    print(value_list)

     


     

    이 외에도 다양한 방식으로 활용할 수 있습니다.

    유용하게 쓰시길 바랍니닷 :) 아듀

     


    ※ 좋아요와 구독은 큰 힘이 됩니다. 감사합니다.

     

     

    반응형

    댓글