You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 07:11:00