kmom05
Detta seminarium tar upp följande områden: Dictionaries och tupler
Förberedelser
Section titled “Förberedelser”Läs Om seminarier.
-
Beskriv med egna ord vad ett dictionary är.
-
Vad menas med nyckel(key) resp värde(value) när man använder dictionary? Hur skiljer det sig mot index i listor?
-
Ge exempel på datatyper som går att använda som nyckel i en dictionary? Varför funkar vissa och andra inte?
-
Kan man ha en lista, dvs datatypen
list
som nyckel och/eller värde i en dictionary? -
Vad “får man” om man för ett dictionary anropar funktionerna
items()
,keys()
respektivevalues()
? -
Vilken/Vilka fördelar finns det med dictionary mot listor om du t.ex vill skapa en telefonbok?
-
Beskriv med egna ord vad en tupel är.
-
Hur många olika “värden/element” kan en tupel innehålla? Måste dessa vara av samma datatyp?
-
Kan en tupel innehålla listor?
-
Vilken ordning har listan
[(3, "britt", 77), (2, "bert", 65), (3, "arvid", 11)]
efter det att den sorterats med listans sort()-funktion.
Hur kod funkar
Section titled “Hur kod funkar”-
Vad är skillnaden på
tup1 = (5, 3, 1)(a, x, k) = tup1och
tup1 = (5, 3, 1)tup2 = tup1 -
Är koden nedan korrekt?
tup1 = (5, 3, 1)tup2 = 6, 8, 2tup1, tup2 = tup2, tup1Om ja - vad blir resultatet? Om nej - vad är det som är fel?
-
Vad är fel i koden nedan?
a_list = [1, 2, 3]b_list = ["a", "b"]my_dict = {a_list: b_list}print(my_dict) -
Är koden nedan korrekt?
d = {(1, 2): "värde", (3, 4): "annat"}print(d[(3, 4)])Om ja - vad blir resultatet? Om nej - vad är det som är fel?
Tolka kod
Section titled “ Tolka kod”-
Vad blir det för utskrift om koden nedan körs?
a = (1, 2)b = (a, 3, 4)print(b[0][1])data = {"Anna": (25, "Stockholm"),"Erik": (30, "Göteborg")}print(data["Anna"][1]) -
Vad skrivs ut när koden körs?
# glassar med volym och pris, t.ex Glassen piggelin med volymen 55 ml och priset 24 kronorice_cream_dict = {"Piggelin" : (55, 24), "Magnum classic" : (110 , 34), "Nogger" : (87, 15), "Sandwich": (100, 35), "Daimstrut" : (150, 35), "88:an" : (95, 24)}for elem in ice_cream_dict.keys():print(elem)for elem in ice_cream_dict.values():print(elem)for elem in ice_cream_dict.items():print(elem)
Praktiska uppgifter
Section titled “ Praktiska uppgifter”-
Skriv ett program som använder dictionary för att analyser en text och bestämmer antalet förekomster av respektive ord i texten. Observera att skiljetecknen ”.,;:!?” inte ska ingå.
- visa resultatet, dvs vilka ord som finns i texten och hur många gånger respektive ord förekommer i texten.
- visa det ord som förekommer flest gånger
- visa de ord som har färre förekomster än ett visst värde
- visa orden tillsammans med ordens antal förekomster sorterade alfabetiskt
- visa orden tillsammans med ordens antal sorterade efter antal förekomster
- visa resultatet som ett horisontellt stapeldiagram
Följande funktioner ska finnas och användas i lösningen:
word_frequency(text)
returnerar ett dictionary med orden (key)och deras antal förekomster, dvs frekvens (value) i strängentext
show_frequency(freq_dictionary)
skriver ut alla ord med frekvensword_with_most_occurrences(freq_dictionary)
returnerar det ord som förekommer flest gångerwords_with_occurrences_more_than(freq_value, freq_dictionary)
returnerar en lista med de ord som har lägre frekvens änfreq_value
show_words_sorted_in_alphabetical_order(freq_dictionary)
skriver ut orden med frekvens sorterade i alfabetisk ordningshow_words_histogram(freq_dictionary)
skriver ut ett horisontell stapeldiagram. Tips: Du kan vänsterjustera en text i en f-string genomf"{variabel: < n}"
där n står för antalet tecken. Exempelvis gerprint(f"{word: < 15} ": ")
att strängen i variabeln word vänsterjusteras och : placeras efter 20 “positioner”.
Obs! Lösningen får inte innehålla list comprehension och inte heller lambda-uttryck.