Advertisement
Acer1968

Namedtuples a jejich použití jako parametrů pro print.format()

Sep 4th, 2020
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.06 KB | None | 0 0
  1. import collections as clc
  2. Trip_params = clc.namedtuple("Trip_params","hotel price date_from date_to destination rating")
  3.  
  4. #Zajezd_parametry = clc.namedtuple("Zajezd_parametry","nazev_hotelu cena odlet prilet destinace hodnoceni")
  5. #ROZDÍLNÁ jména jako používám v šablonách, ČESKÉ názvy proměnných
  6.  
  7. Zajezd_parametry = clc.namedtuple("Zajezd_parametry","hotel price date_from date_to destination rating")
  8. #STEJNÁ jména jako používám v šablonách, ANGLICKÉ názvy proměnných
  9.  
  10. #seznam parametrů jednotlivých zájezdů jako samostatné položky
  11. prvni = Zajezd_parametry("ItaWella", "10000Kč", "1.9.2020", "11.9.2020", "Itálie", "1*")
  12. druhy = Zajezd_parametry("FraResort", "20000Kč", "2.9.2020", "12.9.2020", "Francie", "2*")
  13. treti = Zajezd_parametry("BelBells", "30000Kč", "3.9.2020", "13.9.2020", "Belgie", "3*")
  14. #a z nich udělaný klasický Pythonovský seznam
  15. hotely = [prvni, druhy, treti]
  16.  
  17. #Šablony textů s parametry pro funkci .format() pro různé příležitost uložené v seznamu. Ve složených závorkách jsou anglické názvy proměnných, na které bych chtěl namapovat ty parametry ze seznamu hotely (type="Zajezd_parametry")
  18. Sablony=["Hotel {hotel} za cenu {price} s odletem {date_from}.",
  19. "Odleťte už {date_from} do hotelu {hotel} za úřasnou cenu {price}.",
  20. "Zaplaťte jen {price} a navštivte {hotel} od {date_from}.",
  21. "Za {price} od {date_from} do {rating} hotelu {hotel} do prosluněné {destination}."
  22. ]
  23.  
  24. # tahle dvojitá smyčka je jen pro tento příklad. Tiskne pro všechny hotely všechny varianty Šablon
  25. for i in range(0,len(Sablony)):
  26.     for hotel in hotely:
  27.        
  28.         #print(Sablony[i].format(hotel=hotel.nazev_hotelu,price=hotel.cena,date_from=hotel.odlet,rating=hotel.hodnoceni,destination=hotel.destinace)) #
  29.         print(Sablony[i].format(hotel=hotel.hotel,price=hotel.price,date_from=hotel.date_from,rating=hotel.rating,destination=hotel.destination))
  30.  
  31.         #Chci se zbavit toho přiřazování nahoře ve funkci .format(hotel=hotel.hotel, price=hotel.price.........)
  32.         #Vyzkoušel jsem všelijaké kombinace s funkcí map, čili jsem myslel, že bude stačit něco jako toto:
  33.         #print(Sablony[i].format(map(nevim_co_tu_ma_byt,hotel))
  34.         #abych prostě mohl předat celou tu pojmenovanou matici hotel (resp. prvni, druhy, treti) funkci .format
  35.         #a nemusel se starat, jestli ta konkrétní Šablona z toho použije jen dvě proměnné nebo všechny,
  36.         #protože jsou dobře pojmenované
  37.  
  38.         #Zároveň bych se chtěl zbavit té závislosti na jménech těch proměnných v Zajezd_parametry
  39.         #třeba tím, že to Trip_params používá stejná jména jako ty šablony, takže kdyby se mi povedlo něco jako:
  40.        
  41.         #prvni = Zajezd_parametry(nazev_hotel='ItaWella', cena='10000Kč', odlet='1.9.2020', prilet='11.9.2020', destinace='Itálie', hodnoceni='1*')
  42.  
  43.         #převést na
  44.  
  45.         #hotel = Trip_params(hotel='ItaWella', price='10000Kč', date_from='1.9.2020', date_to='11.9.2020', destination='Itálie', rating='1*')
  46.  
  47.         #tak bych dosáhl svého.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement