Cry*_*sie 21 python dictionary key-value
我有一本字典,我想根据一些键从中获取一些值.例如,我有一个字典,用户的名字,姓氏,用户名,地址,年龄等.比方说,我只想获得一个值(名称) - 姓氏或名字或用户名,但优先顺序如下所示:
(1)姓氏:如果密钥存在,获取值并停止检查.如果没有,请转到下一个键.
(2)名字:如果密钥存在,获取值并停止检查.如果没有,请转到下一个键.
(3)username:如果key存在,则获取值或返回null/empty
#my dict looks something like this
myDict = {'age': ['value'], 'address': ['value1, value2'],
'firstName': ['value'], 'lastName': ['']}
#List of keys I want to check in descending priority: lastName > firstName > userName
keySet = ['lastName', 'firstName', 'userName']
Run Code Online (Sandbox Code Playgroud)
我尝试做的是获取所有可能的值并将它们放入列表中,以便我可以检索列表中的第一个元素.显然它没有成功.
tempList = []
for key in keys:
get_value = myDict.get(key)
tempList .append(get_value)
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点,而不使用if else块?
Pet*_*per 28
如果键的数量很小,一个选项是使用链式获取:
value = myDict.get('lastName', myDict.get('firstName', myDict.get('userName')))
Run Code Online (Sandbox Code Playgroud)
但是如果你定义了keySet,这可能更清楚:
value = None
for key in keySet:
if key in myDict:
value = myDict[key]
break
Run Code Online (Sandbox Code Playgroud)
链接的get
s不会短路,因此将检查所有密钥,但只使用一个密钥.如果您有足够的可能密钥,请使用for
循环.
Ter*_*ryA 15
使用.get()
,如果找不到密钥,则返回None
.
for i in keySet:
temp = myDict.get(i)
if temp is not None:
print temp
break
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
88657 次 |
最近记录: |