7 svar
78 visningar
Bellasofie 56
Postad: 26 mar 2020

Ersätta värden och nycklar i dictionary

Hej! Har kört fast rejält i en tuff uppgift, men första steget jag behöver hjälp med hur jag ska lösa är att jag har två dictionaries som ser ut enligt följande:

{'Matine: Kyssen på kryssen': [16.07, 16.22, 16.37, 16.52, 17.07, 17.22, 17.37], 'Börsen idag': [], 'Uutiset-Nyheter': [], 'Kommer i Ettan': [], 'Aktuellt och väder': [18.07], 'Sommarhallå': [18.37, 18.22], 'Dinosaurier': [18.52], 'Blossom': [19.22, 19.07], 'Gardell får hemligt besök': [19.52, 19.37], 'Mitt i livet': [20.37, 20.07, 20.22], 'Ett ögonblicks verk': [20.52], 'Aktuellt': [21.22, 21.07], 'Sportnytt': [21.37], 'UR: Sommarkvällar med Tidernas Europa': [21.52, 22.07, 22.22], 'Morsarvet': [23.22, 22.37, 23.07, 22.52]}

och den andra:

{'21.07/1': 57, '21.22/1': 48, '21.37/1': 47, '21.52/1': 3, '22.07/1': 3, '22.22/1': 3, '22.37/1': 3, '22.52/1': 3, '23.07/1': 3, '23.22/1': 3, '19.07/1': 2, '16.07/1': 1, '16.22/1': 1, '16.37/1': 1, '16.52/1': 1, '17.07/1': 1, '17.22/1': 1, '17.37/1': 1, '18.07/1': 1, '18.22/1': 1, '18.37/1': 1, '18.52/1': 1, '19.22/1': 1, '19.37/1': 1, '19.52/1': 1, '20.07/1': 1, '20.22/1': 1, '20.37/1': 1, '20.52/1': 1}

det jag vill göra är att "slå ihop dem" så att exempelvis {'Aktuellt': [21.22, 21.07]} tillsammans med {'21.07/1': 57, '21.22/1':48} genererar en ny dictionary som ser ut så här: {'Aktuellt': [48, 57]}

Hackade ihop en lösning men presenterar endast början på den samt pseudo-kod i form av kommentarer. Det krävs en del insikt i olika datatyper, speciellt då dictionaries, för att lösa uppgiften.

Man kan ställa sig frågan om alla värden ska sparas i den nya dictonarien, exvis 'Mitt i livet': [1, 1, 1] eller om endast unika värden ska sparas, exvis 'Mitt i livet': [1]? Tillåts tomma listor, exvis 'Kommer i Ettan': []?

# tilldela första dictionary till 'd1'
# tilldela andra dictionary till 'd2'
# skapa tom dictionary 'd3'
d3 = {}
# löp igenom alla nycklar 'program' i dictionary 'd1'
for program in d1:
    # skapa tom lista 'd3_tider'
    d3_tider = []
    # löp igenom alla nycklar 'tider' i dictionary 'd2'
        # plocka ut 'tid' ur 'tider' (det som ligger före '/' i strängen)
        # om flyttalet 'tid' finns i dictionary 'd1'
            # addera 'tider' från dictionary 'd2' till listan 'd3_tider'
    # lägg in värdet 'd3_tider' till dictionary 'd3' med nyckeln 'program'

Laguna 7672
Postad: 26 mar 2020

Det är olämpligt att representera tal som ska ha precis två decimaler som flyttal, men uppgiften kanske är sådan. Man kan t. ex få problem när man ska jämföra om två är lika. 

Laguna skrev:

Det är olämpligt att representera tal som ska ha precis två decimaler som flyttal, men uppgiften kanske är sådan. Man kan t. ex få problem när man ska jämföra om två är lika. 

Ja, det kan bli ett problem att använda flyttal, man kan då istället representera talen som strängar.

Skaft 464 – F.d. Moderator
Postad: 27 mar 2020

Flyttal blir bara osäkert i beräkningar. Här ser de ut att vara klockslag, och skulle nog ge problem om man t.ex. försöker räkna ut när ett program slutar. Men gör man inga beräkningar ska det inte bli några konstigheter. Dvs, 0.1 + 0.2 blir inte 0.3, men 0.3 är alltid 0.3 och går därför bra att t.ex. ha som key i dictionaries.

Med det sagt är det väl bra att skapa säkra vanor, och undvika flyttal när det går.

Laguna 7672
Postad: 27 mar 2020
Skaft skrev:

Flyttal blir bara osäkert i beräkningar. Här ser de ut att vara klockslag, och skulle nog ge problem om man t.ex. försöker räkna ut när ett program slutar. Men gör man inga beräkningar ska det inte bli några konstigheter. Dvs, 0.1 + 0.2 blir inte 0.3, men 0.3 är alltid 0.3 och går därför bra att t.ex. ha som key i dictionaries.

Med det sagt är det väl bra att skapa säkra vanor, och undvika flyttal när det går.

Det är möjligt att Python garanterar mer än t. ex. C gör, men i C kan det mycket väl hända att det blir "fel" vid rena jämförelser. 

Skaft 464 – F.d. Moderator
Postad: 27 mar 2020

Aha! Ja C vet jag väldigt lite om, min kommentar gällde Pythonkontexten =)

Lindehaven skrev:

Hackade ihop en lösning men presenterar endast början på den samt pseudo-kod i form av kommentarer. Det krävs en del insikt i olika datatyper, speciellt då dictionaries, för att lösa uppgiften.

Man kan ställa sig frågan om alla värden ska sparas i den nya dictonarien, exvis 'Mitt i livet': [1, 1, 1] eller om endast unika värden ska sparas, exvis 'Mitt i livet': [1]? Tillåts tomma listor, exvis 'Kommer i Ettan': []?

Bellasofie, var mitt förslag till någon hjälp eller provar du något annat?

Svara Avbryt
Close