python如何从lis创建字典

2024-05-12 18:15:14 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

Tags: the标题字典数字programonedarkcharms
2条回答

好的,这是基本的字符串处理

伪代码是什么:

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

首先创建一个字典,如下所示:

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

相关问题 更多 >