如何实现从文件生成字典:键唯一时值为普通列表,重复时值为嵌套列表?
解决方案
你可以先按原逻辑完成数据分组收集,之后再遍历字典做一次格式转换:当某个键对应的列表长度为1时,直接取列表里的唯一元素作为值;长度大于1则保持原嵌套列表结构。
修改后的代码如下:
example_dict = {} for line in dictionary: line = line.strip().split() # split()默认按任意空白分割,比split(' ')更健壮 key = line[0] if key not in example_dict: example_dict[key] = [] example_dict[key].append(line[1:]) # 格式转换:处理单条记录的键 for key in example_dict: if len(example_dict[key]) == 1: example_dict[key] = example_dict[key][0] return example_dict
代码说明
- 保留原数据收集逻辑,确保所有记录都被正确分组到对应键下
- 新增遍历步骤:检查每个键对应的值列表长度,若为1则将值替换为列表中的唯一子列表,避免不必要的嵌套
- 用
split()替代split(' '),能更好处理行内多个空格的情况(比如示例中jim那行末尾的空格)
测试你的输入文件内容,输出会符合预期:
{'micheal': ['math', '2'], 'jim': [['chem', '3'], ['math', '3']], 'pam': ['cs', '4']}
内容的提问来源于stack exchange,提问作者potter
相关产品推荐
相关产品推荐

