字典应具有等于数字的键,值等于相应的标题。
str1 = ['Program ONE',
'1001 Transfiguration. ',
'1100 Charms.',
'1250 Defence Against the Dark Arts.',
'1380 Potions. ',
'1420 Arithmancy.',
'2075 Flying. ']
答案 0 :(得分:0)
首先创建一个字典,如下所示:
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
。键是临时列表的第一个元素,值是新创建的字符串,所以剩下要做的就是说:
my_dict[temp[0]] = temp_str
答案 1 :(得分:0)
好的,这是基本的字符串处理。
什么是伪代码:
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