使用文件中的列表和字典进行排序

Sorting with Lists and Dictionaries from a File

提问人:toinfinity 提问时间:6/17/2023 最后编辑:petezurichtoinfinity 更新时间:6/17/2023 访问量:185

问:

提示如下: 编写一个程序,首先读取输入文件的名称,然后使用 file.readlines() 方法读取输入文件。输入文件包含未排序的季节数列表,后跟相应的电视节目。您的程序应将输入文件的内容放入字典中,其中季节数是键,电视节目列表是值(因为多个节目可能具有相同的季节数)。

按键(从小到大)对词典进行排序,并将结果输出到名为 output_keys.txt 的文件,用分号 (;) 分隔与同一键关联的多个电视节目。接下来,按值(字母顺序)对字典进行排序,并将结果输出到名为 output_titles.txt 的文件。

例如:如果输入为:

file1.txt 和 file1.txt 的内容是:
20 硝烟
30 辛普森一家
10
威尔和格蕾丝
14
达拉斯
20


法律与秩序
12
谋杀,她写道

output_keys.txt的文件应包含:
10:威尔和格蕾丝
12:谋杀,她写道
14:达拉斯
20:硝烟;法律与秩序
30:辛普森一家

output_titles.txt的文件应包含:
达拉斯
硝烟
法律与秩序
谋杀案,她写了
辛普森一家
的遗嘱和格蕾丝

这是我所拥有的,但现在的问题是键没有被排序为整数。因此,任何一位数的通道都未正确排序。当我尝试解决这个问题时,我一直遇到字符串、整数和键错误。如何修复代码以将电视节目频道排序为整数?

file_name = input()
user_file = open(file_name)
output_list = user_file.readlines()

my_dict = {}

for index in range(len(output_list)):
    if index % 2 == 0:
        #if the line is even
        dict_keys = output_list[index].strip('\n')
        if dict_keys not in my_dict:
            my_dict[dict_keys] = []
    else:
        my_dict[dict_keys].append(output_list[index].strip('\n'))

f = open('output_keys.txt', 'w')
sorted_keys = sorted(my_dict.keys())
output_file = ''
tv_show_list = []
for the_key in sorted_keys:
    output_file += the_key + ': '
    for tvshow in my_dict[the_key]:
        output_file += tvshow + '; '
        tv_show_list.append(tvshow)
    output_file = output_file[:-2] + '\n'
f.write(output_file)
f.close()

f = open('output_titles.txt', 'w')
tv_show_list.sort()
sorted_list = ''
for tv_show in tv_show_list:
    sorted_list += tv_show + '\n'
f.write(sorted_list)
f.close()
python 列表 字典 文件

评论

0赞 ouroboros1 6/17/2023
这回答了你的问题吗?对文件中的词典和列表进行排序

答:

1赞 Samurai6465 6/17/2023 #1

您可以在对键进行排序之前将其转换为整数。下面是解决此问题的代码的更新版本:

file_name = input()
user_file = open(file_name)
output_list = user_file.readlines()

my_dict = {}

for index in range(len(output_list)):
    if index % 2 == 0:
        # if the line is even
        dict_keys = int(output_list[index].strip('\n'))  # Convert to integer
        if dict_keys not in my_dict:
            my_dict[dict_keys] = []
    else:
        my_dict[dict_keys].append(output_list[index].strip('\n'))

f = open('output_keys.txt', 'w')
sorted_keys = sorted(my_dict.keys())
output_file = ''
tv_show_list = []
for the_key in sorted_keys:
    output_file += str(the_key) + ': '  # Convert back to string for output
    for tvshow in my_dict[the_key]:
        output_file += tvshow + '; '
        tv_show_list.append(tvshow)
    output_file = output_file[:-2] + '\n'
f.write(output_file)
f.close()

f = open('output_titles.txt', 'w')
tv_show_list.sort()
sorted_list = ''
for tv_show in tv_show_list:
    sorted_list += tv_show + '\n'
f.write(sorted_list)
f.close()

使用 int(output_list[index].strip('\n')) 将键转换为整数。生成输出时,str(the_key) 用于将键转换回字符串以进行正确的连接。

评论

0赞 toinfinity 6/17/2023
这太完美了,谢谢!