在Python中,我可以在key:value对的赋值中执行[if exists]吗?
我正在进行LDAP搜索,结果就是我想要的。我正在把结果编入词典。结果中的一些用户有一个特定的键:值对,而有些用户没有。我想把所有用户都插入我的新词典。 下面是在for循环中创建的dict在Python中,我可以在key:value对的赋值中执行[if exists]吗?,python,dictionary,Python,Dictionary,我正在进行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
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']
]
您可以利用
dict.get(key,default)
方法,而不是使用dict[key]
语法键入字典,该方法在键存在时返回键的值,在键不存在时返回默认值
在您的情况下,这将是一种大致如下的情况:
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)
]
我可以在key:value对的赋值中执行[if exists]吗
是的,除了使用@6c1提到的字典的.get
方法外,还可以使用如下三元语句:
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
]
谢谢你,我会试试看,然后回来汇报。是的,这很有效。我也会尝试其他人的解决方案。投票表决,让其他人明白这也是一个有用的解决方案。