python - 使用 python 列表中嵌套字典中存储的值验证作为用户输入的出生日期

标签 python list dictionary defaultdict

我正在尝试验证从用户处获取的出生日期并将其与字典数据库中存储的值进行比较。但即使我输入了正确的出生日期值,它也不会验证该值。这是我的代码:

from collections import defaultdict



accountDetails = [
    {"FirtsName": "JOHN", "LastName": "DENIS","date of Birth": "01-06-1992", "Account Number": "432524352345234", "Account Balance": "50000"},
    {"FirtsName": "AKASH", "LastName": "MAHAJAN", "date of Birth": "04-02-1995","Account Number": "432524352345234", "Account Balance": "50000"},
    {"FirtsName": "AMAN", "LastName": "RANA","date of Birth": "11-04-1996", "Account Number": "432524352345234", "Account Balance": "50000"},
    {"FirtsName": "ANKUR", "LastName": "JAIN","date of Birth": "21-05-1990", "Account Number": "432524352345234", "Account Balance": "50000"},
]


d = defaultdict(lambda: defaultdict(dict))
for item in accountDetails:
    d[item['FirtsName']][item['LastName']][item['date of Birth']] = item

# get valid first name
while True:
    first_name_input = input('Enter First Name:\n').upper()
    if first_name_input in d:
        break
    else:
        print('Enter valid First Name')

# get valid last name
while True:
    last_name_input = input('Enter Last Name:\n').upper()
    if last_name_input in d[first_name_input]:
        break
    else:
        print('Enter valid Last Name')
                         # get valid last name
while True:
    dob_input = input('Enter dob:\n')
    if  dob_input in d[first_name_input]:
        break
    else:
        print('Enter valid dob')


print(d[first_name_input][last_name_input])

用户已将值设置为-04-02-1995

最佳答案

您需要在嵌套字典的第二层中测试键:

while True:
    dob_input = input('Enter dob:\n')
    if dob_input in d[first_name_input][last_name_input]:
        break
    else:
        print('Enter valid dob')

当您打印您创建的嵌套字典的结构时,这一点就会变得清晰:

print(d)

defaultdict(<function __main__.<lambda>>,
            {'AKASH': defaultdict(dict,
                         {'MAHAJAN': {'04-02-1995': {'Account Balance': '50000',
                            'Account Number': '432524352345234',
                            'FirtsName': 'AKASH',
                            'LastName': 'MAHAJAN',
                            'date of Birth': '04-02-1995'}}}),
             ...
             'JOHN': defaultdict(dict,
                         {'DENIS': {'01-06-1992': {'Account Balance': '50000',
                            'Account Number': '432524352345234',
                            'FirtsName': 'JOHN',
                            'LastName': 'DENIS',
                            'date of Birth': '01-06-1992'}}})})

关于python - 使用 python 列表中嵌套字典中存储的值验证作为用户输入的出生日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51478949/

相关文章:

python - 如何将按钮小部件放在标签小部件上并确定其在 Tkinter 中的位置

python - Python的List是如何实现的?

r - 如何取消列出空间对象并在 R 中完全绘制

python - 如何将两个列表合并到一个数组中,这样我就不必对其进行硬编码

python - Emacs:在评估缓冲区时启动一个新的劣质 python shell

python - Python TKinter 窗口中基于时钟的方法 - 请批评

python - 将参数从 shell 脚本传递到 Python 脚本,而无需在命令行上指定参数

json - Swift 3 - 将模拟的 JSON 声明为来自服务器的响应

dictionary - 在 Julia-lang 中遍历嵌套的 Dict

python - 在字典中打印键值对时,它们是否以任何特定顺序打印? (Python)