我有以下初始变量:
secret = {"password": "jdksal",
"user": "fjdklas",
"schema": "jfdaskl"}
pass_words = ['password', 'pass', 'contraseña']
user_words = ['user', 'login', 'username']
如果机密dict包含任何列表中的密钥,我想分配变量。因此,我将运行这个命令(从How to get value from dict if its key can have several values获得):
password, user={k:v for k,v in secret.items() if k in pass_words+user_words}.values()
它工作得很好,我将password
和user
都作为字符串。但是,如果我只对一个变量执行相同的操作,如:
password ={k:v for k,v in secret.items() if k in pass_words}.values()
我将password
作为类型dict_values
。为什么呢
对dict调用values()返回dict_值,在代码中,结果中正好有两个元素,在等号左侧,三个是两个变量,自动取消堆栈,如果只有一个变量在等号左侧,它将不会取消堆栈
您的代码不合理,user_words=['user','login','username','schema'],更改user_words,再次运行代码,您将发现错误
你第一次使用
之所以有效,是因为字典中碰巧正好有两个条目,而且它们的顺序也恰好正确。i、 e.如果您将
secret
更改为它不会再工作了
更好的方法是:
相关问题 更多 >
编程相关推荐