파이썬에서 값들이 딕셔너리 형태로 나옵니다. 여기서 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 루프 다 끝나고 한번만 해보면 됩니다.

    • 죄송하지만 for문 안에서 값 1개만 가져올 수 있는 코드가 있을까요? 임섭 2022.6.29 14:23

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)