📅  最后修改于: 2023-12-03 15:24:34.214000             🧑  作者: Mango
有时候我们的Python程序需要从用户那里获取一个字典输入,比如要求用户输入他们的个人信息,包括姓名、年龄、职业等等。在本文中,我们将介绍几种实现方法。
代码如下:
user_info = {key: input(f"请输入您的{key}: ") for key in ["姓名", "年龄", "职业"]}
print(user_info)
在上述代码中,我们使用了列表推导式和字典推导式来创建用户信息字典。其中,列表推导式[key for key in ["姓名", "年龄", "职业"]]
生成了一个包含用户信息键的列表,而字典推导式{key: input(f"请输入您的{key}: ") for key in ["姓名", "年龄", "职业"]}
则将该列表中的每个键对应到从用户那里获得的输入值。
值得注意的是,由于input
函数返回的值是一个字符串,所以我们需要将用户输入的字符串转换成对应的数据类型,比如将年龄转换成整数。
argparse
模块如果你的Python程序需要接收一个命令行参数作为字典输入,那么使用argparse
模块将会非常方便。
首先,我们需要为我们的程序定义一个命令行参数格式。假设我们需要接收三个参数name
、age
和occupation
,那么我们可以使用如下的代码:
import argparse
parser = argparse.ArgumentParser(description='Process some user info.')
parser.add_argument('--name', type=str, help='user name required')
parser.add_argument('--age', type=int, help='user age required')
parser.add_argument('--occupation', type=str, help='user occupation required')
args = parser.parse_args()
user_info = {"姓名": args.name, "年龄": args.age, "职业": args.occupation}
print(user_info)
在上述代码中,我们使用了argparse
模块中的ArgumentParser
类来创建一个命令行参数解析器parser
。然后,我们使用add_argument
方法为该解析器添加三个命令行参数。对于每个参数,我们指定了它的数据类型和说明。
最后,我们使用parse_args
方法来解析命令行参数,并将它们存储在一个Namespace
对象中。这个对象可以像字典一样被访问,所以我们可以通过args.name
、args.age
和args.occupation
来获取用户输入。
PyInquirer
PyInquirer
是一个用于创建控制台交互界面的Python库,它可以帮助我们从用户那里获取各种类型的输入,包括字典输入。以下是一个使用PyInquirer
获取用户输入的示例代码:
from PyInquirer import prompt
questions = [
{
'type': 'input',
'name': 'name',
'message': '请输入您的姓名:'
},
{
'type': 'input',
'name': 'age',
'message': '请输入您的年龄:'
},
{
'type': 'input',
'name': 'occupation',
'message': '请输入您的职业:'
}
]
user_info = prompt(questions)
print(user_info)
在上述代码中,我们首先定义了一个问题列表questions
,其中包含三个问题,分别对应用户的姓名、年龄和职业。然后,我们使用prompt
函数来展示这些问题,并从用户那里获取输入。最后,prompt
函数会返回一个字典,其中键对应问题中的name
属性,值则为用户输入的值。
本文介绍了三种从用户那里获取字典输入的方法,包括使用input函数和字典推导式、使用Python内置的argparse
模块和使用第三方库PyInquirer
。对于不同的应用场景,选择不同的方法可以使你的代码更简洁、更易读。