Collections.namedtuple() Domanda pratica Python
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)

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































