2015-12-10 40 views
5

aşağıdaki biçimde verileri içeren bir dosya vardır: bu Göründüğü gibi bir örnektir unutmayın, gerçek dosya 2'den fazla satırPython: listelerin listesi Sözlüğe

1 30 5 
2 64 4 
içeriyor

Dosyada okurum, metni tam sayılara dönüştürür ve bir listeye kaydeder. Bu, aşağıdaki kodu ile yapılır:

[[1, 30, 5], [2, 64, 4]] 

Bir sözlüğüne listelerinin listemi açmanız gerekir: listesi için

file = open("dataFile.txt", "r") 
items = [] 
for line in file: 
    line = map(int,line.split()) #convert the text data to integers 
    items.append(line) #add text data to list 

akım biçimi gibi görünüyor. Bunu yapmak nasıl olur?

Sözlük anahtarı I tahminim-ne-sen-istiyorum oynayabilir ve her satırda ilk sayılarını kabul edeceğim

+3

Eğer sözlüğü anahtarı olmak ne istiyorsunuz bitmiş Sözlük nedir? – paisanco

+2

Ne Sözlük? – TigerhawkT3

+0

Örneğinizde, sonuçların ne olması gerektiğini yazın. {: [30, 5], 2: [64, 4] 1} '... ama bu örneğin onun sorunları var aklıma gelen tek şey' dır 1 numara ile başlayan iki satır varsa ne olur? BTW, * Neden * ilk etapta bir sözlük istiyorsun? Sayı listelerinin bir listesi olarak saklanan sayılar listesi listesindeki sorun nedir? – zvone

cevap

4

aslında sıralı tanımlayıcı bir tür olan ilk unsur olmalı ve sen

istiyorum
1 30 5 
2 64 4 

1 : [30, 5] 
2 : [64, 4] 

yüzden ... olmaya

with open("dataFile.txt") as dataFile: 
    items = {} 
    for line in dataFile: 
     line = map(int, line.split()) #convert the text data to integers 
     key, value = line[0], line[1:] 
     items[key] = value 

(ve zaten Python'da yerleşik bir işlev olduğundan ve bu adın başka bir amaçla yeniden adlandırılması kötü biçim olduğundan) file adını değiştirdim.


Ya da ürün listesi ile başlayan yerine bir sözlük anlama kullanabilirsiniz:

itemDict = {item[0]: item[1:] for item in items} 
2

Eğer burada Sözlük anahtar listesinin 1 eleman olmak istiyorum varsayarsak bir uygulamasıdır:

list = [[1, 30, 5], [2, 64, 4]] 
dict = {} 

for l2 in list: 
    dict[l2[0]] = l2[1:] 

O list yineleme ile çalışır ve alt liste l2. Sonra ben l2 1. elemanını alıp dict için bir anahtar olarak atamak ve sonra l2 unsurlarının geri kalanını almak ve değer olarak koydu.

sonuç {1: [30, 5], 2: [64, 4]}

+0

nasıl böyle bir şey elde ediyorum: ürün = ((1, 30, 5), (2, 64, 4)), bu hala bir sözlük? – JustAskingThings

+0

Hayır, bu bir tuple. Sözlüklerin bir karma tablo gibi bir anahtar-değer çifti olması gerekir. Ayrıca, programdaki anahtarınız nedir? İlk değer? –

+0

Bir tuple nasıl uygularsınız? Doğru, anahtarım bir ID – JustAskingThings

İlgili konular