IT&컴퓨터/프로그래밍

파이썬 - 2차원 리스트안에서 필요한 정보 한줄로 찾기

백단z 2021. 11. 29. 23:31

2차원 리스트안에서 필요한 정보 한줄로 찾기

아래와 같이 a는 2차원 리스트이다.
이녀석들중에 첫번째 값이 10인 리스트들을 찾아내어 보자.

2차원 구조:

a = [[10, 20], [30, 40], [10, 60]]


여러줄로 찾기

find = []

for i in a: 
    if i[0] == 10:
        find.append(i)
print(find)

output : [[10, 20], [10, 60]]


한줄로 찾기

find = [i for i in a if i[0] == 10]
print(find)

output : [[10, 20], [10, 60]]


한줄로 찾을때는 타겟을 더 세밀하게 지정할 수 있다.

찾았던 리스트의 첫번째 녀석들을 골라낼지, 두번째 녀석들을 골라낼지 선택

find = [i for i in a if i[0] == 10][0]
print(find)

output : [10, 20]

find = [i for i in a if i[0] == 10][1]
print(find)

output : [10, 60]

 

좀 더 세밀하게 골라낸 녀석들중에서도 몇번째 녀석을 보고싶은지 지정

find = [i for i in a if i[0] == 10][0][0]
print(find)

output : 10


배웠으니 써먹어 보자.

아래는 업비트의 자산정보를 조회하는 api를 이용해 받아온 결과값이다.

(upbitpy 모듈의 get_accounts())

(Balance랑 avg_buy_price는 숫자를 임의 조작했습니다)

[{'currency': 'KRW', 'balance': '10000.00000000', 'locked': '0.0', 'avg_buy_price': '0', 'avg_buy_price_modified': True, 'unit_currency': 'KRW'}, 
{'currency': 'USDT', 'balance': '1', 'locked': '0.0', 'avg_buy_price': '1141.8872', 'avg_buy_price_modified': False, 'unit_currency': 'KRW'},
{'currency': 'EOS', 'balance': '10.00000000', 'locked': '0.0', 'avg_buy_price': '10', 'avg_buy_price_modified': False, 'unit_currency': 'KRW'}]


딕셔너리로 구성된 2차원 리스트이고, 보고싶은것은 원화 보유금액(KRW-Balance)이라면 아래와같이 한줄로 찾을 수 있다.

check_account = upbit.get_accounts()
my_KRW = [p for p in check_account if p['currency'] =='KRW'][0]['balance']
print(my_KRW)

output : 10000

 

 

반응형