파이썬에서 값들이 딕셔너리 형태로 나옵니다. 여기서 len 함수를 써서 가장 큰 수를 뽑고 싶은데 어떻게 해야할까요?
조회수 356회
파이썬에서 원하는 값을 뽑기위해 코딩중 입니다..
우선 c,r에 값을 지정해 두고 shot_list에 append 하였습니다
그리고 여기서 가장 큰 수를 확인하기 위해 print(len(set(shot_list)))
을 사용하였고
값들이 수없이 나오는데 하기와 같이 다른 줄로 나옵니다
ex :
3
3
3
4
5
6
여기서 단순히 print(set(shot_list))
을 사용하면 딕셔너리{} 형태로 나오구요..
가장 큰 len값을 뽑기 위해서 print(max(len(set(shot_list))))
를 하면 TypeError: 'int' object is not iterable
에러가 발생합니다.
하고싶은것은 len 함수중에서 가장 큰 수만 뽑고 싶습니다 ex예에서는 6 1개만 가져오고 싶습니다. 어떻게 해아할까요?
shot_list = []
mesp_list = []
real_shot_list = []
try:
grid_origin = int(xml_gridshape.find('.//A').text)
except:
grid_origin = 0
xml_measrslts = tree.findall('.//B/C')
for xml_measrslt in xml_measrslts:
#axis = int(xml_measrslt.attrib['D'])
xml_egaphases = xml_measrslt.findall('.//E/F/G/H')
#H mapのみ
for elem in xml_egaphases:
if elem.attrib['I'] == '2':
xml_egaphase = elem
shots = xml_egaphase.findall('.//J/K')
for shot in shots:
c, r = float(shot.find('.//L/C').text), float(shot.find('.//L/R').text)
sx, sy = float(shot.find('.//M/X').text), float(shot.find('.//M/Y').text)
mx, my = float(shot.find('.//N/X').text), float(shot.find('.//N/Y').text)
d = str(c)+','+str(r)
shot_list.append(len(d))
# print(len(set(shot_list)))
print(max(shot_list))
2 답변
-
무슨 말을 하는건지 한참을 들여다봤네요. 설명을 좀더 제대로 해주세요.
그리고 set이랑 dict랑 서로 다른 겁니다.
a = [] for 루프: shot_list = [] shot_list.append(d) a.append(len(shot_list)) print(max(a))
- 미안합니다 제가 봐도 잘 모르겠네요... 우선 제가 하고 싶은 것은 print(len(set(shot_list))) 을 했을때 나오는 값들에서 최대값을 뺴고 싶습니다.. 임섭 2022.6.29 11:07
- 그래서 print(max(len(set(shot_list))))를 하면 TypeError: 'int' object is not iterable 에러가 뜨구요... 임섭 2022.6.29 11:07
- print(max(set(shot_list)))을 하던가 하면 되죠. 초보자 2022.6.29 11:16
- 죄송하지만 for문 안에서 값 1개만 가져올 수 있는 코드가 있을까요? 임섭 2022.6.29 14:23
- for 문 자체가 집합에서 값 1개씩 빼오는건데요? 초보자 2022.6.29 14:45
-
어떤 리스트에 원소들을 추가하면서, 그 리스트에서 유니크한 원소들의 갯수를 세어보고 있습니다. ( 3, 3, 3, 4, 5, 6, 계속 증가만 했죠? ) 그 갯수 중에 최대값은 루프안에서 할 필요 없이 그냥 for 루프 다 끝나고 한번만 해보면 됩니다.
댓글 입력