字典的键应该等于数字,值等于相应的标题。
str1 = ['Program ONE',
'1001 Transfiguration. ',
'1100 Charms.',
'1250 Defence Against the Dark Arts.',
'1380 Potions. ',
'1420 Arithmancy.',
'2075 Flying. ']
字典的键应该等于数字,值等于相应的标题。
str1 = ['Program ONE',
'1001 Transfiguration. ',
'1100 Charms.',
'1250 Defence Against the Dark Arts.',
'1380 Potions. ',
'1420 Arithmancy.',
'2075 Flying. ']
首先创建一个字典,如下所示:
my_dict = {}
然后遍历您的列表。您可以通过以下方式实现:
for x in str1:
在您的特定情况下(除了Program ONE),数字首先出现。它们也有四个字符的长度,但让我们考虑一个更一般的情况。在 for 循环中,您可以创建一个临时列表,其中包含由空格分隔的所有内容,如下所示:
temp = x.split(" ")
对于原始列表中的第二个元素,它看起来像这样:
['1001', 'Transfiguration. ']
该数字是临时列表中的第一个元素(索引为 0)。其他所有内容都是课程的名称,所以让我们使用.join()方法来获取正确的字符串。
temp_str = " ".join(temp[1:])
它的作用是选择从索引 1 及以上开始的所有项目,然后使用空格作为分隔符将它们连接在一起。
所以现在让我们在字典中添加一些东西。定义新的对遵循语法dictionary[key] = value。key 是临时列表的第一个元素,value 是新创建的字符串,所以剩下要做的就是说:
my_dict[temp[0]] = temp_str
好的,这是基本的字符串处理。
伪代码是什么:
For each item in <str1>:
split out the number
split out the course-name
add number:course to a dictionary
给出代码:
course_dict = {}
for pair in str1:
course_number, course_name = pair.split(' ', 1) # TODO: handle double-spaces, etc.
course_dict[course_number] = course_name
记下一些伪代码以帮助您围绕任务思考总是有帮助的。这段代码中的关键是split(' ', 1)- 由于第二个参数,它只进行了一次拆分。
那么 - 那个有问题的第一个条目呢,我们如何才能检测到呢?好吧,代码中的一些基本错误处理会捕获它,并且有更好的错误处理总是好的。
course_dict = {}
for pair in str1:
course_number, course_name = pair.split(' ', 1) # TODO: handle double-spaces, etc.
# Check that course_number is really a number
try:
num = int(course_number)
# No error, so it was a number -> good to go
course_dict[course_number] = course_name
except:
# it's not a number
pass