Gå til innhold

hjelp med lagring av verdi i dictionary


Anbefalte innlegg

Hei

jeg skal lage et program som finner flertydige ord med ulike verdier inni en en liste med tupler og lagre dem i en dictionary, ordene skal ikke lagre det samme verdien 2 eller flere ganger. Hvordan tester jeg om verdien finnes allerede, og hvis ikke tilfører verdien i dictionaryen, og ellers bare overse og lete videre?

 

Til nå adder den alle verdiene den finner til ordet. f.eks når den ser ordet "The" og den står med verdien "NN" også finner den ordet "The" igjen med veridne "NN" enda en gang, da vil jeg ikke at den skal lagre andre gangen den finner "NN"

 

koden min så langt:

 

flertydig_dict = {}
for word in brown_news:
if word[0] in flertydig_dict:
flertydig_dict[word[0]].append(word[1])
else:
flertydig_dict[word[0]] =[word[1]]
print flertydig_dict
Lenke til kommentar
Videoannonse
Annonse

Så lenge du har en dict kan du skrive uansett. Siden nøklene er unike vil det kun være en instans i dicten. Så du kan bare assigne og si deg ferdig.

 

dict = { word[ 0 ]: word[ 1 ] for word in brown_news }
Såfremt jeg forstår hva du vil.

 

--

 

edit: dersom du skal lagre alle word[ 1 ] (men kun unike) kan du bruke defaultdict.

 

import collections

ambiguous = collections.defaultdict( set )
for word in brown_news: ambiguous[ word[ 0 ] ].add( word[ 1 ] )
Endret av Lycantrophe
Lenke til kommentar

dette er oppgaven:

 

Hvor mange ord er flertydige, dvs at de forekommer med minst to forskjellige ord- klassetagger?

Her vil vi kun ha distinkte tagger, dvs listen ["NP","NN"] i stedet for ["NP","NN","NN","NN","NP

 

nå får jeg :

 

["NP","NN","NN","NN","NP

Endret av It-freak
Lenke til kommentar

sånn ser brown_news ut, bare med de 10 første elementene: [('The', 'AT'), ('Fulton', 'NP-TL'), ('County', 'NN-TL'), ('Grand', 'JJ-TL'), ('Jury', 'NN-TL'), ('said', 'VBD'), ('Friday', 'NR'), ('an', 'AT'), ('investigation', 'NN'), ('of', 'IN')]

 

vil at outputen skal se noe ut som dette:

best ADJ ADV NP V

better ADJ ADV V DET

close ADV ADJ V N

cut V N VN VD

even ADV DET ADJ V

grant NP N V -
hit V VD VN N
lay ADJ V NP VD

left VD ADJ N VN

 

 

nå blir den sånn:

 

, 'Pumpkin': 'NN-TL', 'Weaver': 'NP', 'priced': 'VBN', 'Baltimore': 'NP-TL', 'upwards': 'RB', 'alienated': 'VBN', 'Coach': 'NN-TL', 'ranks': 'NNS', 'Dorenzo': 'NP', 'volumes': 'NNS', 'ideological': 'JJ', 'Marsicano': 'NP', 'Frog-marched': 'VBN', 'Ceil': 'NP'}

Lenke til kommentar

Nå finner den bare verdien til hvert ord uavhengig om det samme ordet alt er lagret

 

hver gang den finner et ord(nøkkel) så skal den sjekke hva verdien er, hvis verdien ikke allerede er funnet, så lagres den, hvis ikke så leter den videre. Ordet "the" forekommer flere ganger, da skal dejn sjekke verdien til "the", hvis den finner ulike verdier ved alle forekomstene, da skal den lagre alle 3 de 3 verdiene ved "the", hvis den finner "NN" "DP" og "NN" igjen, da skal den bare lagre "NN" og "DP. i tillegg så finner den nå ord med kun én verdi, den skal kun finne flertydige ord :) det jeg sliter med

 

outputen skal ha:

1 nøkkel og minst 2 ulike verdier: left VD ADJ N VN

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å
×
×
  • Opprett ny...