如何从含数字与单词的用户输入列表中提取数字存入字典
问题分析与解决
先说说你原代码里的几个问题:
string3=[string2]完全多余,string2已经是split分割后的列表,你把它再套一层嵌套列表,遍历的时候拿到的是整个原列表,根本不是单个元素- 输入的所有内容都是字符串类型,
isinstance(i, int)永远不会成立,得判断字符串能不能转成数字 - 提取数字用列表就够了,没必要用字典,除非你要额外存数字的位置信息,但你的需求只是提取数字打印
最简实现代码
# 获取输入并分割成元素列表 input_content = input("请输入由空格分隔的正数和单词:") item_list = input_content.split() # 提取其中的数字 numbers = [] for item in item_list: # 判断是否是正数字符串 if item.isdigit(): # 转成int类型,也可以保留字符串形式 numbers.append(int(item)) # 打印结果 print(numbers)
如果一定要用字典(比如存数字的位置)
input_content = input("请输入由空格分隔的正数和单词:") item_list = input_content.split() number_dict = {} for idx, item in enumerate(item_list): if item.isdigit(): # 键为元素位置索引,值为数字;也可以把数字作为键,位置作为值,按需调整 number_dict[idx] = int(item) print(number_dict)
拓展:处理小数/负数的情况
如果需要识别小数或者负数,用isdigit()就不够了,得用异常捕获的方式:
numbers = [] for item in item_list: try: # 转成float兼容小数,转int则只保留整数 num = float(item) numbers.append(num) except ValueError: # 不是数字,跳过该元素 continue
内容的提问来源于stack exchange,提问作者TenseSnake9
相关产品推荐
相关产品推荐

