Sida 1 av 1

Kmom05 lab4 uppgift 1.8

InläggPostat: 06 okt 2016, 16:09
av Signe.Liden
Hej.
Efter och stressad har jag en viss känsla av att jag fulhackade den här, så ni får gärna föreslå ett bättre sätt att få in dict-värdena i en lista:

Kod: Markera allt
phonebook = dict()
phonebook['Chandler'] = 55523645
phonebook['Monica'] = 55564452
phonebook['Ross'] = 55545872

katalogen = list(phonebook.keys())
katalogen.sort()

listan = []

for key in katalogen:
    listan.append(key)
    listan.append(' ')
    listan.append(str(phonebook[key]))
    listan.append('\n')

delimiter = ''
str0 = delimiter.join(listan)
print(type(str0))
   
ANSWER = str0


Listor vill ju bara ta ett värde i taget, så det här blev min workaround. Men det finns säkert smartare sätt.

Hilfe, bitte! :)

Re: Kmom05 lab4 uppgift 1.8

InläggPostat: 06 okt 2016, 20:00
av Allinrep
Klistrar in uppgiften här för att det ska vara lättare att hjälpa.
Exercise 1.8
Use a for-loop to walk through the dictionary and and create a string
representing it. Each name and number should be on its own row, separated
by a space. The names must come in alphabetical order. Answer with the
resulting string.


Man behöver inte skapa en lista så specifikt när man vill sortera en dictionary. Funktionen sorted() tar en dictionary som argument och returnerar en lista. En rad, kort och smidigt.
Kod: Markera allt
katalogen = sorted(phonebook)


Sen kan man göra en sträng av det direkt inne i loopen.
Kod: Markera allt
for name in katalogen:
    katalogstr += name
    katalogstr += ' '
    katalogstr += str(phonebook[name]))
    katalogstr += '\n'

Re: Kmom05 lab4 uppgift 1.8

InläggPostat: 06 okt 2016, 22:03
av Signe.Liden
Tack!

Klokt att lägga med uppgiften, det kan ju underlätta. :)

Och ja, det där hade jag missat helt. Var dock tvungen att skapa katalogstr utanför loopen, men det kanske var underförstått från din sida.

Hur som: tack för hjälpen. Anade att jag gick över ån efter vatten... :)