6 svar
247 visningar
Sami 55 – Fd. Medlem
Postad: 18 nov 2020 09:53

nyckel och värde

hur kan kan skapa key and value av tex tre rader?

hej jag heter

olof och

jag gillar programmering

där meningen på raden ska vara key och value radnumret?

 

förstår man måste skapa en tom dictionary , upp={} och sen iterera över varje rad och läsa av radnumret osv men sitter fast i hur man skall koda det.. om ngn har ngn logaritmide eller liknande hade det varit uppskattat :D

emilg 478
Postad: 18 nov 2020 10:06

Koden nedanför läser in tio rader och lägger i en dictionary. 

my_dict = dict()
counter = 1
while counter <= 10:
	rad = input()
	my_dict[rad] = counter
	counter += 1
print(my_dict)
Tegelhus 225
Postad: 18 nov 2020 10:07

Nu vet jag inte om det finns något smidigare sätt att göra det, men en grundalgoritm som fungerar i de flesta språk går ju ut på att som du säger loopa genom allt, och lägga in rad för rad. I pseudokod skulle det kunna se ut något i stil med:

radnummer = 0
dictionary = {}
for rad in fil do
	dictionary[rad] = radnummer
	radnummer = radnummer + 1
end
jek7 35 – Fd. Medlem
Postad: 19 nov 2020 13:05

Tänk på att en nyckel bara kan finnas en gång, så skulle två rader i filen ha samma innehåll, så kommer bara ett av dom att komma med i dict:en. Men om du vet att det inte är så i filen så behöver du ju inte ta hänsyn till det.

# En liten en-rads-variant av tidigare exempel, mest för skojs skull
upp = {rad.rstrip():nr for (nr, rad) in enumerate(file("filnamn.txt"))}

Sami 55 – Fd. Medlem
Postad: 19 nov 2020 13:48

hm, oki, men om man skulle vända på det kanske det blir enklare? att radnummer är nyckel och texten på raden är värdet?

emilg 478
Postad: 19 nov 2020 15:10
Sami skrev:

hm, oki, men om man skulle vända på det kanske det blir enklare? att radnummer är nyckel och texten på raden är värdet?

Det låter som ett vanligare use case, men vad är det du vill använda det till?

Sami 55 – Fd. Medlem
Postad: 19 nov 2020 15:47

Jag förstår man skall skapa en tom dictionary, tex 

d= {}  och sedan göra en for loop över alla rader i filen. typ 

with open(’fil’) as f 

d={}

radnummer =0

for rad in f: 

  radnummer+=1

 ......

 

försöker applicera själva idén om nycklar lch värden på Ngt man kan använda det på     

Svara Avbryt
Close