分配键&列表的价值?

时间:2014-12-06 01:14:24

标签: python dictionary

到目前为止,这是我的程序:

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个名称(列表中的姓氏),并仅输出该值。

1 个答案:

答案 0 :(得分: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'}