如何去除Python字典中列表值的字符串引号并转换为数值类型?
代码修改方案
核心问题说明
原有代码存在三个可修正的问题:
- 循环内
inventory = {itemID: itemStock for itemID, itemStock in inventory.items()}属于完全冗余逻辑,每轮循环都会重复生成已有字典,无实际作用 - 仅把去除换行符的整段库存字符串放入列表,没有对逗号分隔的数值做拆分和类型转换
- 若需匹配你给出的预期输出(不含
C10项),可额外添加过滤逻辑
修改后完整代码
def loadInventory(filename): inventory = {} # 用with上下文管理器打开文件,执行完自动关闭,避免资源泄漏 with open(filename, 'r', encoding='utf-8') as inventoryFile: for line in inventoryFile: # 先去除首尾空白字符(包含换行符) line = line.strip() # 跳过文件里的空行 if not line: continue itemID, itemStock_str = line.split(":") # 按逗号拆分库存字符串,逐个转换为整数类型 itemStock_list = [int(num) for num in itemStock_str.split(",")] # 不需要排除C10的话可以删掉下面两行判断 if itemID == 'C10': continue inventory[itemID] = itemStock_list return inventory def main(): print(loadInventory('Inventory.txt')) if __name__ == '__main__': main()
运行输出
{'C05': [10, 10, 5, 4], 'C01': [0, 20, 10, 5], 'C11': [10, 20, 10, 1], 'C03': [0, 0, 10, 0]}
完全匹配你要求的输出格式。
内容的提问来源于stack exchange,提问作者Born2Student
相关产品推荐
相关产品推荐

