Gå til innhold

[Løst]Output fra en for-loop printet på én linje?


Anbefalte innlegg

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
Videoannonse
Annonse
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

Se der ja! Tusen takk. :D

 

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
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
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 av zotbar1234
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...