我正在进行LDAP搜索,我的结果就是我想要的。我把结果放到字典里。结果中的某些用户有一个特定的键:值对,有些则没有。我希望所有用户都插入到我的新词典中。 这是在for循环中创建的dict。
ldap_output_Emply_dict[result_affil[i][1]['uid'][0]] = [
result_affil[i][1]['mail'][0],
result_affil[i][1]['uconnPersonPrimaryAffiliation'][0],
result_affil[i][1]['eduPersonEntitlement']
]
目前,1553中只有16位用户拥有最后一项
result_affil[i][1]['eduPersonEntitlement']
我想在我的新词典中使用所有1553。 我试过的这种语法无效,这甚至可能吗?
ldap_output_Emply_dict[result_affil[i][1]['uid'][0]] = [
result_affil[i][1]['mail'][0],
result_affil[i][1]['uconnPersonPrimaryAffiliation'][0],
if 'eduPersonEntitlement' in result_affil: result_affil[i][1]['eduPersonEntitlement']
]
答案 0 :(得分:1)
我可以在键:值对的赋值中执行[if exists]吗?
是的,除了使用字典的.get
方法作为@ 6c1提及之外,你可以使用这样的三元语句:
d1 = {}
d2 = {1:1,2:2,3:3}
d1[4] = d2[4] if 4 in d2 else None
在您的代码中:
ldap_output_Emply_dict[result_affil[i][1]['uid'][0]] = [
result_affil[i][1]['mail'][0],
result_affil[i][1]['uconnPersonPrimaryAffiliation'][0],
result_affil[i][1]['eduPersonEntitlement'] if 'eduPersonEntitlement' in result_affil[i][1] else None
]
答案 1 :(得分:0)
不是使用dict[key]
语法键入字典,而是可以利用dict.get(key, default)
方法,如果键存在则返回键的值,如果键不存在则返回默认值。< / p>
在你的情况下,它将是:
ldap_output_Emply_dict[result_affil[i][1]['uid'][0]] = [
result_affil[i][1]['mail'][0],
result_affil[i][1]['uconnPersonPrimaryAffiliation'][0],
result_affil[i][1].get('eduPersonEntitlement', None)
]