Collections.namedtuple() Python 연습 문제
Nov 28 2022
collections.namedtuple()기본적으로 namedtuple은 만들기 쉽고 가벼운 객체 유형입니다.
collections.namedtuple()
기본적으로 namedtuple은 만들기 쉽고 가벼운 객체 유형입니다.
간단한 작업을 위해 튜플을 편리한 컨테이너로 바꿉니다.
명명된 튜플을 사용하면 튜플의 멤버에 액세스하기 위해 정수 인덱스를 사용할 필요가 없습니다.
예시 :
코드 01
>>> from collections import namedtuple
>>> Point = namedtuple('Point','x,y')
>>> pt1 = Point(1,2)
>>> pt2 = Point(3,4)
>>> dot_product = ( pt1.x * pt2.x ) +( pt1.y * pt2.y )
>>> print dot_product
11
>>> from collections import namedtuple
>>> Car = namedtuple('Car','Price Mileage Colour Class')
>>> xyz = Car(Price = 100000, Mileage = 30, Colour = 'Cyan', Class = 'Y')
>>> print xyz
Car(Price=100000, Mileage=30, Colour='Cyan', Class='Y')
>>> print xyz.Class
Y
John Wesley 박사는 학생의 ID, 마크, 클래스 및 이름 목록이 포함된 스프레드시트를 가지고 있습니다.
귀하의 임무는 Dr. Wesley가 학생들의 평균 점수를 계산하도록 돕는 것입니다.

메모:
1. 열은 임의의 순서일 수 있습니다. ID, 마크, 클래스 및 이름은 스프레드시트에서 임의의 순서로 작성할 수 있습니다.
2. 열 이름은 ID, MARKS, CLASS 및 NAME입니다. (이러한 이름의 철자와 대소문자 유형은 변경되지 않습니다.)
입력 형식:
첫 번째 줄에는 전체 학생 수인 정수 N이 포함됩니다.
두 번째 줄에는 임의의 순서로 열 이름이 포함됩니다.
다음 N 행에는 각각의 열 이름 아래에 마크, ID, 이름 및 클래스가 포함됩니다.
제약 조건:
- 0 <= N <= 100
소수점 이하 2자리로 수정된 목록의 평균 점수를 인쇄합니다.
샘플 입력:
테스트 케이스 01
5
ID MARKS NAME CLASS
1 97 Raymond 7
2 50 Steven 4
3 91 Adrian 9
4 72 Stewart 5
5 80 Peter 6
5
MARKS CLASS NAME ID
92 2 Calum 1
82 5 Scott 2
94 2 Jason 3
55 8 Glenn 4
82 2 Fergus 5
테스트 케이스 01
78.00
81.00
테스트 케이스 01
평균 = (97 + 50 + 91 + 72 + 80)/5
4줄 이하의 코드로 이 문제를 해결할 수 있습니까?
참고: 정답이지만 4줄 이상인 솔루션에 대한 패널티는 없습니다.
해결책
import collections
n = int(input())
scol = ','.join(input().split())
Student = collections.namedtuple('Student',scol)
sum = 0
for i in range(n):
row = input().split()
student = Student(*row)
sum += int(student.MARKS)
print(sum/n)
