首页 > 解决方案 > 字典仅捕获最后一个键值对 Python

问题描述

有一个名称字典和一个打印字典的功能。问题是当我运行 create_user() 函数时,它只捕获并打印最后一个值。

users={}

def create_users():

    while True:
        choice=input('Create a new user?: Y/N ')
        if(choice=='y'):
           first_name=  input('Enter first name: ')
           users['first_name'] = first_name

           last_name= input('Enter last name: ')
           users['last_name']=last_name

           print(len(users))

        if(choice=='n'):
            print('Exit')
            break

def print_dir():
    print('Directory Item ','\n')
    for k,v in users.items():
        print(k,v)

create_users()
print_dir()

我也在下面尝试过,在 while 之前和之后捕获。那没有解决。

def create_user():
  first_name=  input('Enter first name: ')
  users['first_name'] = first_name

  last_name= input('Enter last name: ')
  users['last_name']=last_name

  while True:
        choice=input('Create a new user?: Y/N ')
        if(choice=='y'):
           first_name=  input('Enter first name: ')
           users['first_name'] = first_name

           last_name= input('Enter last name: ')
           users['last_name']=last_name 

任何提示/线索我该如何解决这个问题?谢谢

我根据建议尝试的附加项目(嵌套字典)

users={}
users['username'] = {}

while True:
        choice=input('Create a new user?: Y/N ')
        if(choice=='y'):
           first_name=  input('Enter first name: ')
           users['username']['first_name'] = first_name

           last_name= input('Enter last name: ')
           users['username']['last_name']=last_name

我仍然遇到同样的问题,即没有获得所有值
Create a new user?: Y/N y

输入名字:詹姆斯

输入姓氏:琼斯

创建新用户?:Y/N y

输入名字:rob

输入姓氏:威廉

创建一个新用户?:是/否 n

退出目录项

用户名 {'first_name': 'rob', 'last_name': 'william'}

标签: pythondictionary

解决方案


字典是一个键值对。字典有唯一的键。因此,当您运行程序并第二次选择“y”时,它将更新现有的键,即“first_name”和“last_name”。在这种情况下,您不能在字典中拥有像 {'first_name':'A','last_name':'B','first_name':'C','last_name':'D'} 这样的数据,键是重复的。但是,您可以将 first_name 保存为键,将姓氏保存为值。请参阅下面的代码。

users={}

def create_users():

    while True:
        choice=input('Create a new user?: Y/N ')
        if(choice=='y'):
           first_name=  input('Enter first name: ')
           # users['first_name'] = first_name

           last_name= input('Enter last name: ')
           # users['last_name']=last_name
           users[first_name] = last_name
           print(len(users))

        if(choice=='n'):
            print('Exit')
            break

def print_dir():
    print('Directory Item ','\n')
    for k,v in users.items():
        print(k,v)

create_users()
print_dir()

推荐阅读