Python, egyszerű lista kezelés, van erre valami beépített könyvtár?
Pl ilyenekből áll a lista:
[['A', '0000', '3', '23'], ['K', '0015', '15005', '23'], ['SM', '0015', '01013', '21'], ['PA', '0015', '34016', '20'], ['SN', '0015', '17004', '24'], ['PR', '0015', '31018', '21']]
van erre valami jó metódus,hogy könnyen lehessen kezelni ezeket?
Mit takarnak ezek az értékek?
Mit értesz azon, hogy "könnyen lehessen kezelni ezeket"?
['A', '0000', '3', '23']
A = Titulusa.
0000 = képesítés kódja.
3 = egyedi azonosító
23 = életkor.
Szeretném könnyen össze számolni pl az éltekorokat, átlagolni,egyedi azonosító alapján sorba rendezni stb..
Perszehogy van. Látszik, hogy a kis listáid mind ugyanazt a struktúrát követik: van egy string, aztán három szám. Ezeknek biztosan tudsz nevet is adni. Ha sikerül elnevezni öket, akkor csinálhatsz belölük lista helyett valami célnak megfelelö adatstruktúrát, például objektumot:
from dataclasses import dataclass
@dataclass
class FurcsaDolog:
____betuk: str
____elso_szam: int
____masodik_szam: int
____harmadik_szam: int
raw_data = [['A', '0000', '3', '23'], ['K', '0015', '15005', '23'], ['SM', '0015', '01013', '21'], ['PA', '0015', '34016', '20'], ['SN', '0015', '17004', '24'], ['PR', '0015', '31018', '21']]
pretty_data = [FurcsaDolog(*l) for l in raw_data]
>> print(pretty_data[0])
FurcsaDolog(betuk='A', elso_szam='0000', masodik_szam='3', harmadik_szam='23')
>> print(pretty_data[0].elso_szam)
'0000'
így egyel jobban néz ki.
Lehet, hogy az elsö adattag('A', 'K', 'SM', ...stb) az valami azonosító, és szeretnéd a megfelelö struktúrát azon keresztül elérni. Ebben az esetben a külsö listának se listának kéne lennie, hanem mondjuk egy dict-nek:
>> pretty_data_dict = {l[0]: FurcsaDolog(*l) for l in raw_data}
>> print(pretty_data_dict['SM'])
FurcsaDolog(betuk='SM', elso_szam='0015', masodik_szam='01013', harmadik_szam='21')
x = [['A', '0000', '3', '23'], ['K', '0015', '15005', '23'], ['SM', '0015', '01013', '21'], ['PA', '0015', '34016', '20'], ['SN', '0015', '17004', '24'], ['PR', '0015', '31018', '21']]
sum(int(i[3]) for i in x)
sum(int(i[3]) for i in x) / len(x)
sorted(x, key=lambda x: x[2])
sorted(x, key=lambda x: int(x[2]))
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!