Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,我可以在key:value对的赋值中执行[if exists]吗?_Python_Dictionary - Fatal编程技术网

在Python中,我可以在key:value对的赋值中执行[if exists]吗?

在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搜索,结果就是我想要的。我正在把结果编入词典。结果中的一些用户有一个特定的键:值对,而有些用户没有。我想把所有用户都插入我的新词典。 下面是在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']
]

您可以利用
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
]

谢谢你,我会试试看,然后回来汇报。是的,这很有效。我也会尝试其他人的解决方案。投票表决,让其他人明白这也是一个有用的解决方案。