在字典中使用查询器

问题描述

我正在尝试制作一个用户那里获取输入的字典。我目前的代码是(很久没有完成)

person = {
  "name": str(inp("Enter your name: ")),"age": int(inp("Enter your age: ")),"gender": # Help
}

好的,所以我还写了一个带有查询器的小代码,提供了两个选择:

questions = [
  inquirer.List('gender',message="What gender are you?",choices=['Male','Female'],),]
answers = inquirer.prompt(questions)

这在控制台中为用户提供了 2 个选择。男性和女性。 但是我如何才能让我的性别代码与“性别”元素相关联?

解决方法

由于您的 person 对象是一个字典,您可以像这样设置 gender

person["gender"] = new_value

对于 inquirer,似乎 .prompt() 函数返回一个字典,其中键(如您的个人字典中的性别)是问题的名称(我想这对您来说是将是 gender)。在这种情况下,您可以将之前的代码与我们的新知识联系起来,并编写如下内容:

person["gender"] = answers["gender"]

如果你想以更简洁的方式写出以上所有内容,你可以尝试这样的事情:

questions = [
  inquirer.List('gender',message="What gender are you?",choices=['Male','Female'],),]
answers = inquirer.prompt(questions)

person = {
  "name": str(inp("Enter your name: ")),"age": int(inp("Enter your age: ")),"gender": answers["gender"]
}

当然,如果您想保留问题的顺序,您可以简单地提取姓名和年龄的问题,如下所示:

name = str(inp("Enter your name: "))
age = int(inp("Enter your age: "))
questions = [
  inquirer.List('gender',]
answers = inquirer.prompt(questions)

person = {
  "name": name,"age": age,"gender": answers["gender"]
}