Najjom Skrevet 10. juni 2009 Del Skrevet 10. juni 2009 Jeg har da så vidt begynt å kikke litt på Python, og driver for øyeblikket og skriver (veldig) enkle programmer for å lære. Men det er da diverse problemer jeg møter på som jeg ikke kan finne løsningen på ved hjelp av google. Jeg har en Dictionary der jeg vil printe alle keys'ene som er i den, og jeg gjør det på denne måten: for key in dictionary: print(key) Men ved å gjøre det kommer det som er i listen under hverandre, mens jeg gjerne vil ha dem på én linje. Er det mulig? Google sa til meg at man gjør det ved å skrive: print(key,), men det fungerer ikke? Som sagt; jeg er veldig nybegynner Lenke til kommentar
terjeelde Skrevet 10. juni 2009 Del Skrevet 10. juni 2009 Jeg har da så vidt begynt å kikke litt på Python, og driver for øyeblikket og skriver (veldig) enkle programmer for å lære. Kjempebra! Du har gjort ett aldeles utmerket valg! Jeg har en Dictionary der jeg vil printe alle keys'ene som er i den, og jeg gjør det på denne måten: for key in dictionary: print(key) Du kan egentlig gjøre dette på en veldig enkel måte: print ', '.join( dictionary.keys() ) Men ved å gjøre det kommer det som er i listen under hverandre, mens jeg gjerne vil ha dem på én linje. Er det mulig? Google sa til meg at man gjør det ved å skrive: print(key,), men det fungerer ikke? Prøv: print key, Som sagt; jeg er veldig nybegynner Er vel de færreste som lærer python i mors mage. Terje Lenke til kommentar
Najjom Skrevet 10. juni 2009 Forfatter Del Skrevet 10. juni 2009 Se der ja! Tusen takk. print ', '.join( dictionary.keys() ) Jeg fikk den den til å virke etter at jeg hadde prøvet og feilet et par ganger, fant til slutt ut av at jeg trengte parenteser rundt den.. Men det virker ikke som det som blir printet kommer i samme rekkfølge som jeg skrev dem i? Fant ut at den ikke virket for en vanlig liste, hvordan kunne man gjort dette for en slik? Og hadde det vært mulig og forklare den biten av kode (i boksen over) for meg? Lærer ikke stort av å bare se og kopiere noe, liker å finne hvordan det fungerer. Lenke til kommentar
terjeelde Skrevet 10. juni 2009 Del Skrevet 10. juni 2009 Men det virker ikke som det som blir printet kommer i samme rekkfølge som jeg skrev dem i? Det stemmer nok sikkert. I Python har lister rekkefølge, men dictionaries har ikke. Fant ut at den ikke virket for en vanlig liste, hvordan kunne man gjort dette for en slik? dictionary.keys() gir en liste over nøklene, så du gjør på sett og vis det i eksempelet over faktisk. For å gjøre det direkte fra en liste trengr du bare: print ', '.join( liste ) Og hadde det vært mulig og forklare den biten av kode (i boksen over) for meg? Lærer ikke stort av å bare se og kopiere noe, liker å finne hvordan det fungerer. liste = dictionary.keys() # Gir en liste over alle nøkler "tekststreng".join( liste ) # Legger sammen alle elementene i variabelen liste, med "tekststreng" mellom. # En tungvindt måte det samme kunne vært gjort på: liste = dictionary.keys() streng = ', '.join( liste ) print streng # dette er egentlig det samme som: print ', '.join( dictionary.keys() ) # men uten "mellomlagringen Det er to ting som er *veldig* fint for å pirke i kode med, og lett kunne se hvordan du kan manipulere objekter. Det ene er: dir(foo) Som gir deg en liste over alt som er på objektet foo. Dette gjør det lett å f.eks sjekke hva du kan gjøre med strenger: print dir("streng") Det andre er at du lett kan hente ut dokumentasjon på metoder og funksjoner: print "string".join.__doc__ Terje Lenke til kommentar
zotbar1234 Skrevet 11. juni 2009 Del Skrevet 11. juni 2009 (endret) Fant ut at den ikke virket for en vanlig liste, hvordan kunne man gjort dette for en slik? I tillegg til det terjeelde har skrevet -- en del funksjonalitet i Python bygger seg ikke på den spesifikke sekvenstypen (list, tuple, dict, set, osv.), men heller på egenskapene. For "".join spesifikt, kreves det en vilkårlig sekvens. Siden både dict og list støtter sekvensprotokollen (CPython-dokumentasjonen har en del om akkurat det), kan man skrive koden slik: >>> d = {'x': 1, 'y': 2} >>> print ", ".join(d) y, x >>> l = list("foobar") >>> l ['f', 'o', 'o', 'b', 'a', 'r'] >>> print ", ".join(l) f, o, o, b, a, r Mao. dersom det eneste som kreves er å gå gjennom samtlige nøkler i en dict, elementene i et tuppel, liste eller set, så er koden identisk. En dict brukt i "sekvenskontekst" oppfører seg som en sekvens av nøklene fra dicten. Endret 11. juni 2009 av zotbar1234 Lenke til kommentar
Najjom Skrevet 11. juni 2009 Forfatter Del Skrevet 11. juni 2009 Flott, tusen takk til dere begge. Hjalp meg virkelig. 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å