首页 > 解决方案 > Python 3:字典不包含所有值

问题描述

我想在字典中保存一些值,但例如如果我输入“Password1234!” 我打印出我得到的字典:

{1: [5, -20], 7: [1.5, -10], 4: [2, -5]}

...我的“上限”价值和元素丢失了。我确定我错过了一些非常简单的东西,但我不明白,谢谢。这是我的代码:

password = input("password: ")
calculate(password)

def calculate(password):
    quantity = 0
    upper = 0
    lower = 0
    digit = 0
    special = 0
    for i in password:
        quantity += 1
        if i.isupper():
            upper += 1
        elif i.islower():
            lower += 1
        elif i.isdigit():
            digit += 1
        else:
            special += 1
    
    types_list = {
        upper : [3, -10],
        lower : [1.5, -10],
        digit : [2, -5],
        special : [5, -20]
        }
    print(types_list)

输出:{1: [5, -20], 7: [1.5, -10], 4: [2, -5]}

标签: pythonpython-3.xdictionary

解决方案


我确定我错过了一些非常简单的东西,但我不明白,

字典键是唯一的。由于您有一个upper字母和一个special字符,因此有两个 keys 1,因此您创建了 dict:

{
    1 : [3, -10],
    lower : [1.5, -10],
    digit : [2, -5],
    1 : [5, -20]
}

第二个键1覆盖第一个键。

你的方案真的没有多大意义,你为什么使用计数作为字典键?


推荐阅读