qwerty0192 Skrevet 27. februar 2017 Del Skrevet 27. februar 2017 (endret) Hei. Trenger hjelp med telling i dictionary. Jeg lurer på om hvordan man kan telle antall ganger, hver gang en nøkkel har en verdi som er annerledes. Eksempel: d = {'hei': 'a', 'hei':'b', 'hei':'c'}. Dette skal eksempel telles som 1 siden nøkkelen hei har verdier som forekommer mer en 1 gang. Altså skal jeg telle alle nøkler som har verdi forekomst mer enn 1. Takker for svar på forhånd Edit: Moderator kan slette denne tråden. Glemte helt at en dictionary nøkkel ikke kunne ha flere typer av samme verdi. Endret 27. februar 2017 av aom Lenke til kommentar
geir__hk Skrevet 27. februar 2017 Del Skrevet 27. februar 2017 Hei. Nå kjenner jeg ikke til Phyton eller Perl for den saks skyld, jeg har holdt meg mest til Autohotkey. Der er det nok andre terminologier, men jeg vil tro prinsippet er det samme: Det kalles for "associative arrays", som i praksis betyr at istedet for en array der indeksen er heltall, så tillates en nær hvilken som helst tekststreng. Om jeg skulle ta fatt på problemet så ville jeg simpelthen ha brukt "arrayName[nøkkel] += 1". Siden du er interressert i å liste opp alle forekomster som opptrer mer enn 1 gang så kreves det at språket tillater å traversere gjennom en array som ikke utelukkende består av heltallsnøkler. I AHK benyttes for-loop til dette. 1 Lenke til kommentar
qwerty0192 Skrevet 28. februar 2017 Forfatter Del Skrevet 28. februar 2017 Hei. Nå kjenner jeg ikke til Phyton eller Perl for den saks skyld, jeg har holdt meg mest til Autohotkey. Der er det nok andre terminologier, men jeg vil tro prinsippet er det samme: Det kalles for "associative arrays", som i praksis betyr at istedet for en array der indeksen er heltall, så tillates en nær hvilken som helst tekststreng. Om jeg skulle ta fatt på problemet så ville jeg simpelthen ha brukt "arrayName[nøkkel] += 1". Siden du er interressert i å liste opp alle forekomster som opptrer mer enn 1 gang så kreves det at språket tillater å traversere gjennom en array som ikke utelukkende består av heltallsnøkler. I AHK benyttes for-loop til dette. Takker Du ga meg en ide. Skal se om det funker. Lenke til kommentar
snippsat Skrevet 28. februar 2017 Del Skrevet 28. februar 2017 (endret) Bruk Defaultdict som er anbefalt over dict.setdefault(). >>> from collections import defaultdict >>> lst = [('hei', 'a'), ('blue', 2), ('hei', 100), ('blue', 4), ('car',999), ('hei', 'world')] >>> d = defaultdict(list) >>> for k, v in lst: ... d[k].append(v) ... >>> sorted(d.items()) [('blue', [2, 4]), ('car', [999]), ('hei', ['a', 100, 'world'])] Hver gang key kollider,blir det laget en liste med de verdier. Ser nå at det er 3 elementer,kan f.eks telle med len(). >>> d['hei'] ['a', 100, 'world'] >>> len(d['hei']) 3 Endret 28. februar 2017 av snippsat Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå