Collections.namedtuple() Python-Übungsfrage
collections.namedtuple()
Grundsätzlich sind namedtuples einfach zu erstellende, leichtgewichtige Objekttypen.
Sie verwandeln Tupel in praktische Container für einfache Aufgaben.
Bei namedtuples müssen Sie keine Integer-Indizes verwenden, um auf Mitglieder eines Tupels zuzugreifen.
Beispiel :
Code 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
Dr. John Wesley hat eine Tabelle mit einer Liste von Schülerausweisen, Noten, Klassen und Namen.
Ihre Aufgabe ist es, Dr. Wesley bei der Berechnung der Durchschnittsnoten der Schüler zu helfen.
Notiz:
1. Spalten können in beliebiger Reihenfolge sein. IDs, Marken, Klasse und Name können in beliebiger Reihenfolge in die Tabelle geschrieben werden.
2. Spaltennamen sind ID, MARKS, CLASS und NAME. (Die Schreibweise und Groß-/Kleinschreibung dieser Namen ändert sich nicht.)
Eingabeformat :
Die erste Zeile enthält eine ganze Zahl N, die Gesamtzahl der Schüler.
Die zweite Zeile enthält die Namen der Spalten in beliebiger Reihenfolge.
Die nächsten N Zeilen enthalten die Markierungen, IDs, Namen und Klassen unter ihren jeweiligen Spaltennamen.
Einschränkungen:
- 0 <= N <= 100
Drucken Sie die Durchschnittsnoten der Liste auf 2 Dezimalstellen korrigiert aus.
Beispieleingabe:
TESTFALL 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
TESTFALL 01
78.00
81.00
TESTFALL 01
Durchschnitt = (97 + 50 + 91 + 72 + 80)/5
Können Sie diese Herausforderung in 4 Codezeilen oder weniger lösen?
HINWEIS: Es gibt keine Strafe für Lösungen, die richtig sind, aber mehr als 4 Linien haben.
Lösung
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)

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































