📌  相关文章
📜  如何在python中从用户那里获取字典输入(1)

📅  最后修改于: 2023-12-03 15:24:34.214000             🧑  作者: Mango

如何在Python中从用户那里获取字典输入

有时候我们的Python程序需要从用户那里获取一个字典输入,比如要求用户输入他们的个人信息,包括姓名、年龄、职业等等。在本文中,我们将介绍几种实现方法。

方法一:使用input函数和字典推导式

代码如下:

user_info = {key: input(f"请输入您的{key}: ") for key in ["姓名", "年龄", "职业"]}
print(user_info)

在上述代码中,我们使用了列表推导式和字典推导式来创建用户信息字典。其中,列表推导式[key for key in ["姓名", "年龄", "职业"]]生成了一个包含用户信息键的列表,而字典推导式{key: input(f"请输入您的{key}: ") for key in ["姓名", "年龄", "职业"]}则将该列表中的每个键对应到从用户那里获得的输入值。

值得注意的是,由于input函数返回的值是一个字符串,所以我们需要将用户输入的字符串转换成对应的数据类型,比如将年龄转换成整数。

方法二:使用Python内置的argparse模块

如果你的Python程序需要接收一个命令行参数作为字典输入,那么使用argparse模块将会非常方便。

首先,我们需要为我们的程序定义一个命令行参数格式。假设我们需要接收三个参数nameageoccupation,那么我们可以使用如下的代码:

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.nameargs.ageargs.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。对于不同的应用场景,选择不同的方法可以使你的代码更简洁、更易读。