Collections.namedtuple() Domanda pratica Python

Nov 28 2022
collections.namedtuple() Fondamentalmente, le namedtuple sono tipi di oggetti leggeri e facili da creare.

collections.namedtuple()
Fondamentalmente, le namedtuple sono tipi di oggetti leggeri e facili da creare.
Trasformano le tuple in comodi contenitori per attività semplici.

Con namedtuples, non è necessario utilizzare indici interi per accedere ai membri di una tupla.

Esempio :

Codice 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

Il dottor John Wesley ha un foglio di calcolo contenente un elenco di ID, voti, classe e nome dello studente.
Il tuo compito è aiutare il dottor Wesley a calcolare i voti medi degli studenti.

Nota:

1. Le colonne possono essere in qualsiasi ordine. ID, marchi, classe e nome possono essere scritti in qualsiasi ordine nel foglio di calcolo.

2. I nomi delle colonne sono ID, MARCHI, CLASSE e NOME. (L'ortografia e il tipo di maiuscole e minuscole di questi nomi non cambieranno.)

Formato di input:

La prima riga contiene un numero intero N, il numero totale di studenti.
La seconda riga contiene i nomi delle colonne in qualsiasi ordine.

Le successive N righe contengono i marchi, gli ID, il nome e la classe, sotto i rispettivi nomi di colonna.

Vincoli:

  • 0 <= N <= 100

Stampa la media dei voti della lista corretta a 2 cifre decimali.

Ingresso di esempio:

CASO DI PROVA 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

CASO DI PROVA 01

78.00

81.00

CASO DI PROVA 01

Media = (97 + 50 + 91 + 72 + 80)/5

Puoi risolvere questa sfida in 4 righe di codice o meno?

NOTA: Non ci sono penalità per soluzioni corrette ma con più di 4 righe.

Soluzione

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)