为列表分配键和值?



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

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

你可以

像这样做一些事情:

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'}

最新更新