如何在Python中获取形如[('a',23),...]的元组列表用户输入?
问题描述
需要在Python中生成格式为[('a',23), ('b', 37), ('c', 11), ('d', 29)]的元组列表,尝试了以下代码:
tup = [] line = input("") while(line != ''): tup.append(tuple(line.split())) line = input() print(tup)
但输出结果为[('a','1'),('b','2')],数字以字符串形式存储,不符合需求,求正确实现方案。
解决方法
场景1:逐行输入键值对
原代码的核心问题是split()分割后所有元素都是字符串类型,需将第二个元素转换为整数。修改后的代码如下:
tup = [] line = input("输入键值对(格式:键 数字),空行结束输入:") while line.strip() != '': parts = line.split() if len(parts) >= 2: # 将第二个元素转为整数,组成元组加入列表 tup.append((parts[0], int(parts[1]))) line = input() print(tup)
使用时依次输入a 23、b 37、c 11、d 29,最后输入空行即可得到目标格式的结果。
场景2:一次性输入完整列表字符串
如果需要直接输入[('a',23), ('b', 37), ('c', 11), ('d', 29)]这类完整的列表格式字符串,推荐用ast.literal_eval安全解析:
import ast input_str = input("输入完整的列表格式字符串:") try: result = ast.literal_eval(input_str) print(result) except (SyntaxError, ValueError): print("输入格式错误,请检查后重试")
该方法能直接解析符合Python语法的字符串,避免了eval的安全风险,同时自动保留整数类型。
内容的提问来源于stack exchange,提问作者Varan Erranki
相关产品推荐
相关产品推荐

