8 svar
122 visningar
Bellasofie är nöjd med hjälpen!
Bellasofie 59
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 Online 8992
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 961 – 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 Online 8992
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 961 – 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?

Bellasofie 59
Postad: 16 maj 2020
Lindehaven skrev:
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?

Hej! Det var tvunget att lösas genom en hel del for-loopar och olika listor! Men det löste sig till slut:) Tack snälla för hjälpen!!

Svara Avbryt
Close