Gå til innhold

Telling av nøkler som har verdi forekomst mer enn 1(dictionary)


Anbefalte innlegg

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 av aom
Lenke til kommentar
Videoannonse
Annonse

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.

  • Liker 1
Lenke til kommentar

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

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 av snippsat
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...