-3

字典的键应该等于数字,值等于相应的标题。

str1 = ['Program ONE', 
        '1001 Transfiguration. ', 
        '1100 Charms.', 
        '1250 Defence Against the Dark Arts.', 
        '1380 Potions. ', 
        '1420 Arithmancy.', 
        '2075 Flying. ']
4

2 回答 2

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。key 是临时列表的第一个元素,value 是新创建的字符串,所以剩下要做的就是说:

my_dict[temp[0]] = temp_str
于 2018-10-30T22:51:41.357 回答
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
于 2018-10-30T22:54:49.147 回答