Skip to content

kmom05

Detta seminarium tar upp följande områden: Dictionaries och tupler

Läs Om seminarier.

  1. Beskriv med egna ord vad ett dictionary är.

  2. Vad menas med nyckel(key) resp värde(value) när man använder dictionary? Hur skiljer det sig mot index i listor?

  3. Ge exempel på datatyper som går att använda som nyckel i en dictionary? Varför funkar vissa och andra inte?

  4. Kan man ha en lista, dvs datatypen list som nyckel och/eller värde i en dictionary?

  5. Vad “får man” om man för ett dictionary anropar funktionerna items(), keys()respektive values()?

  6. Vilken/Vilka fördelar finns det med dictionary mot listor om du t.ex vill skapa en telefonbok?

  7. Beskriv med egna ord vad en tupel är.

  8. Hur många olika “värden/element” kan en tupel innehålla? Måste dessa vara av samma datatyp?

  9. Kan en tupel innehålla listor?

  10. Vilken ordning har listan [(3, "britt", 77), (2, "bert", 65), (3, "arvid", 11)] efter det att den sorterats med listans sort()-funktion.

  1. Vad är skillnaden på

    tup1 = (5, 3, 1)
    (a, x, k) = tup1

    och

    tup1 = (5, 3, 1)
    tup2 = tup1
  2. Är koden nedan korrekt?

    tup1 = (5, 3, 1)
    tup2 = 6, 8, 2
    tup1, tup2 = tup2, tup1

    Om ja - vad blir resultatet? Om nej - vad är det som är fel?

  3. Vad är fel i koden nedan?

    a_list = [1, 2, 3]
    b_list = ["a", "b"]
    my_dict = {a_list: b_list}
    print(my_dict)
  4. Ä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?

  1. 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])
  2. Vad skrivs ut när koden körs?

    # glassar med volym och pris, t.ex Glassen piggelin med volymen 55 ml och priset 24 kronor
    ice_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)
  1. 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ängen text
    • show_frequency(freq_dictionary) skriver ut alla ord med frekvens
    • word_with_most_occurrences(freq_dictionary) returnerar det ord som förekommer flest gånger
    • words_with_occurrences_more_than(freq_value, freq_dictionary) returnerar en lista med de ord som har lägre frekvens än freq_value
    • show_words_sorted_in_alphabetical_order(freq_dictionary)skriver ut orden med frekvens sorterade i alfabetisk ordning
    • show_words_histogram(freq_dictionary) skriver ut ett horisontell stapeldiagram. Tips: Du kan vänsterjustera en text i en f-string genom f"{variabel: < n}" där n står för antalet tecken. Exempelvis ger print(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.