2014-12-06 62 views
0

这里是迄今为止我的程序:为列表分配键和值?

file = open('CASS.txt', 'r') 
f = file.readlines() 
file.close() 

classcode = input('Please enter a class code: ') 

print("Class list for", classcode) 
for line in f: 
    if line.find(classcode)>=0: 
     names = line.split() 
     names1 = names[0].split(',')[0:3] 
     print(names1) 

和输出类TDA3M102是

['Abdull', 'Sonia', 'F'] 
['Armstrong', 'Sammi', 'F'] 
['Barrey', 'Tina', 'F'] 
['Bu', 'Kyle', 'M'] 
['Cheng', 'Henry', 'M'] 
['Dance', 'Daniel', 'M'] 
['East', 'Adam', 'M'] 
['Frasier', 'Annie', 'F'] 
['Han', 'Brandon', 'M'] 
['Huang', 'Peter'] 
['Kauffman', 'Fredricka', 'F'] 
['Lunsford', 'Mike', 'M'] 
['Leung', 'Dan', 'M'] 
['Li', 'Annika', 'F'] 
['Li', 'Ben', 'M'] 
['Muhummad', 'Artom', 'M'] 
['Nguyen', 'Tim', 'M'] 
['Peterson', 'Elena'] 
['Shneider', 'Samantha', 'F'] 
['Sun', 'Yu', 'M'] 
['Vance', 'Adam', 'M'] 
['Wen', 'William', 'M'] 
['Woods', 'Larry', 'M'] 
['Yan', 'Harry'] 

我有这个列表转换成一个字典,并指定名字&姓氏为每个学生作为价值的关键和性别。如果没有性别,程序应该设置一个随机性别。我不太确定如何去做这件事。有任何想法吗?

这里是我的尝试:

myDict = {} 

for name in names1: 
    if name in myDict: 
     myDict[name] += 1 
    else: 
     myDict[name] = 1 

print(myDict) 

输出功率为:

{'Yan': 1, 'Harry': 1} 

由于某种原因,它只是(列表中的最后一个名字)认识1名,仅输出该值。

+0

你尝试过这么远吗?你知道如何弄清楚是否有性别?如何选择一个随机的?如何制作字典? – 2014-12-06 01:15:51

+0

@ li.davidm我试过使用for语句并将其循环到一个新的字典中,但它只是为一个名称(通常是姓氏)和崩溃。我也有一种感觉,我应该使用.setdefault来为没有一个的名字设置一个性别。如果没有给它们,性别应该是随机的。 – eskoka 2014-12-06 01:21:32

回答

0

你可以做服用点是这样的:

names1 = [['Abdull', 'Sonia', 'F'], 
     ['Armstrong', 'Sammi', 'F'], 
     ['Barrey', 'Tina', 'F'], 
     ['Bu', 'Kyle', 'M'], 
     ['Cheng', 'Henry', 'M'], 
     ['Dance', 'Daniel', 'M'], 
     ['Huang', 'Peter']] 


import random 

myDict = {} 

for lname,*rest in names1: 
    fname = rest[0] 
    gender = rest[1] if len(rest) == 2 else random.choice(['M','F']) 

    key = fname + ' ' + lname 
    if key not in myDict: 
     myDict[key] = gender 
    else: 
     print("Student {} already exists!".format(key)) 



print(myDict) 

这给:

{'Sonia Abdull': 'F', 'Sammi Armstrong': 'F', 'Tina Barrey': 'F', 'Daniel Dance': 'M', 'Peter Huang': 'M', 'Henry Cheng': 'M', 'Kyle Bu': 'M'} 
+0

当我试着这与代码的其余部分它只出来与键:价值列表中的姓氏像这样:{'a H':'M','a Y':'n'} – eskoka 2014-12-06 02:52:30