提问人:toinfinity 提问时间:6/17/2023 最后编辑:petezurichtoinfinity 更新时间:6/17/2023 访问量:185
使用文件中的列表和字典进行排序
Sorting with Lists and Dictionaries from a File
问:
提示如下: 编写一个程序,首先读取输入文件的名称,然后使用 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()
答:
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
这太完美了,谢谢!
评论