2016-04-09 48 views
0

bu yüzden bir metin dosyası okuyacak, bir metin satırından gereken bilgileri ayıklayacak bir işlev yazmaya çalışıyorum ve sonra bu bilgiyi bir anahtardaki bir anahtara atayım. python sözlüğü. Ancak burada sahip olduğum bir problem. Python Bir sözlük için birkaç anahtar yapmak için bir dize

def read_star_names(filename): 
""" 
Given the name of a file containing a star catalog in CSV format, produces a dictionary 
where the keys are the names of the stars and the values are Henry Draper numbers as integers. 

If a star has more than one name, each name will appear as a key 
in the dictionary. If a star does not have a name it will not be 
represented in this dictionary. 

example return: {456: 'BETA', 123: 'ALPHA', 789: 'GAMMA;LITTLE STAR'} 
""" 
result_name = {} 
starfile = open(filename, 'r') 
for dataline in starfile: 
    items = dataline.strip().split(',') 
    draper = int(items[3]) 
    name = str(items[6]) 
    result_name[name] = draper 
starfile.close() 
return result_name 

Bu

bu okuma girişimi:

0.35,0.45,0,123,2.01,100, ALPHA

-0.15,0.25,0,456,3.2,101 BETA

0.25 , -0.1,0,789,4.3,102, GAMMA; KÜÇÜK YILDIZ

ben yaşıyorum ne sorun döndürür bu olmasıdır: { 'ALPHA':, 123 'GAMMA; KÜÇÜK YILDIZ': 789, 'BETA ': 456} Ben GAMMA'yı ve Little Star, ayrı tuşlar olabilir, ama yine de aynı sayıda başvurmak için, 789.

nasıl sürdürmesi gerektiğini istiyorsun? Metin satırını noktalı virgülle ayırmayı denedim, ancak bu eklenmiş dizinleri ve bunları yönetmek için zor bir zaman geçirdim.

Teşekkürler.

Zaten bütün adlarını içeren bölümünü izole ettik
+0

açıklama gibi isimler ayrı ve bunların her biri için ayrı anahtarları yapmak – Natecat

+0

soruda anlattığınız ile uyuşmuyor! Ayrıca name = str (items [6]) olarak isimlendiriyordum; – Ozzoned

cevap

0

, yapmanız gereken tüm yorumda yöntemin yüzden

for i in name.split(";"): 
     result_name[i] = draper