6 svar
50 visningar
Sami 22
Postad: 18 nov 2020

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 355
Postad: 18 nov 2020

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 193
Postad: 18 nov 2020

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 37
Postad: 19 nov 2020

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 22
Postad: 19 nov 2020

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 355
Postad: 19 nov 2020
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 22
Postad: 19 nov 2020

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