如何从列表创建字典

时间:2018-10-30 22:33:37

标签: python

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

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

2 个答案:

答案 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