코딩스토리/파이썬

파이썬 코딩 - 리스트/딕셔너리 정렬하기 - sorted()함수

Tech&Fin 2021. 11. 12. 11:37
반응형

비트코인 자동매매 프로그램을 만들다 보면 리스트 및 딕셔너리 형태를 상당히 많이 사용하게 되는데요. 리스트와 딕셔너리는 정렬을 해서 사용해야 하는 경우가 많이 발생 합니다.

 

예를 들어 지난 포스팅에서 다루었던 CCI 지표를 구하는 과정에서 업비트 API를 이용해 가져온 캔들 데이터는 기본적으로 최근 시간 순으로 정렬되어 있으며 별도로 API내에서 정렬 후 받아오는 기능이 없어 받아온 캔들 데이터를 오래된 시간순으로 정렬해야 올바른 CCI 지표 값을 구할 수 있습니다.

 

이번 시간에는 위와 같은 경우에 사용할 수 있는 sorted() 함수에 대해서 살펴 보려고 합니다.

 

CCI 지표를 구하는 방법에 대한 포스팅은 아래 링크를 클릭하면 확인할 수 있습니다.

 

2021.11.09 - [프로젝트/비트코인 자동매매] - CCI 지표 구하기(Commodity Channel Index) - 파이썬 업비트 비트코인 자동매매

 

CCI 지표 구하기(Commodity Channel Index) - 파이썬 업비트 비트코인 자동매매

이번 시간에는 몇몇 분들께서 댓글로 요청해 주신 파이썬과 업비트 API를 이용하여 CCI (Commidity Channel Index) 지표를 구하는 방법에 대해서 살펴 보려고 합니다. 다른 지표를 구하는 방법들은 아래

technfin.tistory.com

 

현재 테크앤핀에서는 비트코인 자동매매 프로그램을 만드는 프로젝트가 진행되고 있으니 아래 프로젝트 카테고리에서 지금까지 진행중인 프로그램들을 확인하실 수 있습니다.

 

https://technfin.tistory.com/category/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8/%EB%B9%84%ED%8A%B8%EC%BD%94%EC%9D%B8%20%EC%9E%90%EB%8F%99%EB%A7%A4%EB%A7%A4

 

'프로젝트/비트코인 자동매매' 카테고리의 글 목록

코딩&재테크 이야기

technfin.tistory.com

 

 

목차 - 클릭하면 이동합니다.

     

    파이썬 내장 정렬 함수 - sorted()

    파이썬에서는 정렬을 위한 함수를 기본적으로 내장하고 있으며 리스트 및 딕셔너리를 정렬할 수 있는 대표적인 함수로 sorted() 함수가 많이 사용되고 있습니다.

     

    sorted() 함수는 리스트나 딕셔너리 자체를 정렬하지는 않고 정렬된 새로운 객체를 반환하므로 함수 실행만으로 원본 데이터가 변경되지는 않습니다. 결과를 새로운 객체 또는 기존 객체에 담아야 합니다.

     

    리스트 정렬

    sorted_list = sorted(list, reverse=True/False)
    # 리스트 선언 list = ['a', 'c', 'b', 'e', 'd']

    # 리스트(정렬전)
    print('리스트(정렬전):', list)

    # 리스트(정렬후/오름차순)
    sorted_list = sorted(list)
    print('리스트(정렬후/오름차순):', sorted_list)

    # 리스트(정렬후/내림차순)
    sorted_list = sorted(list, reverse=True)
    print('리스트(정렬후/내림차순):', sorted_list)

     

    결과:

    리스트(정렬전): ['a', 'c', 'b', 'e', 'd']
    리스트(정렬후/오름차순): ['a', 'b', 'c', 'd', 'e']
    리스트(정렬후/내림차순): ['e', 'd', 'c', 'b', 'a']

    리스트 내용을 오름/내림 차순으로 정렬할 수 있으며 정렬 순서를 정하는 reverse 값은 입력하지 않는 경우 오름 차순이 기본 값이 됩니다.

     

    리스트 내 딕셔너리 정렬

    프로젝트를 하다보면 여러개의 딕셔너리를 리스트 형태로 담고 있는 객체를 많이 사용하게 되는데요. 리스트 안에 있는 딕셔너리들을 key의 Value 순으로 정렬하여 사용하는 경우가 많습니다.

     

    sorted(list, key=(lambda x: x['key']), reverse=True/False)
    # 리스트 내 딕셔너리 선언
    list = [{'item': 'KRW-BTC', 'price': 5000}, {'item': 'KRW-ADA', 'price': 300}, {'item': 'KRW-DOGE', 'price': 200}, {'item': 'KRW-ETH', 'price': 3000}]

    # 리스트 내 딕셔너리(정렬전)
    print('리스트 내 딕셔너리(정렬전):', list)

    # 리스트 내 딕셔너리(key=item 정렬후/오름차순)
    sorted_list = sorted(list, key=(lambda x: x['item']))
    print('리스트(key=item 정렬후/오름차순):', sorted_list)

    # 리스트 내 딕셔너리(key=item 정렬후/내림차순)
    sorted_list = sorted(list, key=(lambda x: x['item']), reverse=True)
    print('리스트(key=item 정렬후/내림차순):', sorted_list)

    # 리스트 내 딕셔너리(key=price 정렬후/내림차순)
    sorted_list = sorted(list, key=(lambda x: x['price']), reverse=True)
    print('리스트(key=price 정렬후/내림차순):', sorted_list)

     

    결과:

    리스트 내 딕셔너리(정렬전): [{'item': 'KRW-BTC', 'price': 5000}, {'item': 'KRW-ADA', 'price': 300}, {'item': 'KRW-DOGE', 'price': 200}, {'item': 'KRW-ETH', 'price': 3000}]

    리스트(key=item 정렬후/오름차순): [{'item': 'KRW-ADA', 'price': 300}, {'item': 'KRW-BTC', 'price': 5000}, {'item': 'KRW-DOGE', 'price': 200}, {'item': 'KRW-ETH', 'price': 3000}]

    리스트(key=item 정렬후/내림차순): [{'item': 'KRW-ETH', 'price': 3000}, {'item': 'KRW-DOGE', 'price': 200}, {'item': 'KRW-BTC', 'price': 5000}, {'item': 'KRW-ADA', 'price': 300}]

    리스트(key=price 정렬후/내림차순): [{'item': 'KRW-BTC', 'price': 5000}, {'item': 'KRW-ETH', 'price': 3000}, {'item': 'KRW-ADA', 'price': 300}, {'item': 'KRW-DOGE', 'price': 200}]

    위와 같이 딕셔너리 리스트를 Key의 Value값으로 정렬할 수 있습니다.

     

    마치며

    리스트 및 딕셔너리 정렬은 상당히 많이 사용되고 sorted() 함수 외에도 다른 방법이 있으나 sorted() 함수만 사용해도 커버가 가능하니 이 함수만 알아두어도 큰 문제는 없을 것 같습니다.

     

    그럼 다음 포스팅에서도 비트코인 자동매매 프로그램을 만드는데 유용한 파이썬 코딩 내용으로 찾아 뵙도록 하겠습니다. 블로그를 구독하시면 소식을 조금 더 빨리 받아 보실 수 있습니다.

    반응형